点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好!
我创建了一个数据库表,其中包含两个CHAR2类型的索引字段(key1,key2)和一个STRING类型的值字段。
该表包含3700个条目。 值字段仅包含短字符串(最多30个)。
SELECT语句大约需要3秒钟...
仅选择关键字段非常快,但字符串字段需要3秒。
我进行了SQL跟踪,但是只有SELECT语句运行时间如此长。
我知道在数据库中存储和选择STRINGS并不是最好的方法,但是我看不出为什么要花那么多时间。
这是来自性能跟踪SAT:
您对我有什么提示吗?
预先感谢
Enno
(56.6 kB)
您好,
我昨天刚刚解决了这个问题:-)
我们从Z * DB表中进行了(标准的abap/open sql)SELECT,其中一列定义为STRING(Oracle中的CLOB) )。 简单的SELECT * FROM ztable约40k条记录花费了大约60秒钟!
我正在研究可能是什么问题,并将其固定在STRING列上。 如果我运行相同的SELECT却没有选择STRING列-花了大约1秒钟(40k条记录,没有一个字符串列)。
找不到其他解决方案。 但是我在ABAP中使用" EXEC SQL"尝试了Oracle的"本机SQL",选择相同数量的数据现在仅花费了约10秒(在DO。ENDDO。循环中进行FETCH,不同的方法甚至可能更快?请发表评论)。 因此,我最终使用了这种"解决方法",因为它是代码中我们需要尽可能多的性能的部分。 但! 请阅读下文!!!!
如果您将此解决方案与本机SQL结合使用-那么我强烈建议您对所获取的数据进行详细的测试和比较(OPEN SQL与本机SQL SELECTs)。 就我而言,数据几乎完全相同。 不同之处在于,本机SQL select的字符串数据缺少所有'EN SPACE'(U + 2002)尾随字符! (对于我们的实现没有问题)
请发表评论或分享其他想法...
其他信息:
该字段为 类型为STRINGVAL的数据类型为" STRING-字符串(CLOB)"
Oracle版本为12.1.0.2.0
这是一个答案测试。
或测试答案。
从移动设备
似乎每个条目都将通过SELECT * ... INTO TABLE提取:
< p>与T005T相同的选择(我将其用作测试表的模板)看起来"效率更高":
我没有找到有关" DB:Exec Static"的任何解释...
Tomas Buryanek
嗨,Enno,
如果在Oracle方面将字符串实现为CLOB甚至BLOB,则可以解释一些延迟。 我不明白这么大的延迟。
但是[BC] LOB的普遍问题是,您需要在OCI界面中采取额外的步骤来检索数据。尽管我从Oracle 10开始就没有使用Oracle OCI进行编程,所以我的知识已经过时了。 无论如何,当您从数据库中检索一行时,字符串只是存在,但对于CLOB,您需要为每个选定行和"字符串"字段打开一个流,以检索该数据。 我想这就是SAP数据库驱动程序在后台执行的操作。
但是我看到这是一个有趣的问题。 尤其是与HANA行为进行比较时,我很快就会自己看看。
干杯,
Peter
Enno Wulff T005T表没有 STRING列。 我尝试在SELECT * FROM Ztable(带有STRING列)上运行SAT,但在我们的系统上看不到" DB:Exec Static" ...
一周热门 更多>