对包含字符串的数据库表进行SELECT花费太多时间(Oracle)

2020-08-21 00:28发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好! 我创建了一个数据库...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好!

我创建了一个数据库表,其中包含两个CHAR2类型的索引字段(key1,key2)和一个STRING类型的值字段。

该表包含3700个条目。 值字段仅包含短字符串(最多30个)。

SELECT语句大约需要3秒钟...

仅选择关键字段非常快,但字符串字段需要3秒。

我进行了SQL跟踪,但是只有SELECT语句运行时间如此长。

我知道在数据库中存储和选择STRINGS并不是最好的方法,但是我看不出为什么要花那么多时间。

这是来自性能跟踪SAT:

您对我有什么提示吗?

预先感谢

Enno

(56.6 kB)
12条回答
绿领巾童鞋
2020-08-21 00:36

您好,
我昨天刚刚解决了这个问题:-)
我们从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)尾随字符! (对于我们的实现没有问题)

请发表评论或分享其他想法...

一周热门 更多>