我有一个包含超过3亿条记录的表,其中只包含密钥,源和哈希值。应用程序的内置sql在其sql中对哈希值运行一个大的IN谓词以获取数据.sqls执行缓慢,因此需要有关如何提高sql性能的建议。我无法更改sql,因为它已经内置了应用程序的内部sql。到目前为止,我已经尝试在密钥上添加索引,在哈希列上添加另一个索引但是没有提供太多帮助。
答案 0 :(得分:0)
在我的脑海中,你可以创建一个表,也许是一个临时表(也可以接受索引),包含当前查询的IN
谓词中的值。然后,原始查询与此表的简单内部联接将具有相同的效果,但如果DB2可以利用索引可能会大大加快。您需要确保连接中涉及的列都具有索引。
答案 1 :(得分:0)
您(或您的DBA)可能会尝试使用Design Advisor来建议新索引等。
可以从命令行工具{{1}} https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.admin.perf.doc/doc/c0005144.html
运行或者从提供基于Web的前端的数据服务器管理器 Query Advisor和Access Path Advisor。 https://www-01.ibm.com/support/docview.wss?uid=swg27048195