为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: DM8
【操作系统】:windows
【CPU】:
【问题描述】*:
在dm管理工具执行以下sql:
SELECT je.id AS jeid,jae.id AS jaeid FROM iris_v40.meta_journal_entry_1 je,iris_v40.iris_journal_auth_entry jae
WHERE je.Id = jae.jid AND je.nsid = 1 AND (je.path='/华宝证券/RPA/临时文件/测试测试' OR je.path LIKE '/华宝证券/RPA/临时文件/测试测试/%') AND je.operateType != 1;
执行时间大约为1分钟,其中meta_journal_entry_1 表中的数量约为2800多万,请问这个sql可以如何优化?
可以试一下hint /*+ optimizer_or_nbexp(2) */
1、先手动收集下统计信息:DBMS_STATS.GATHER_TABLE_STATS('模式名','表名',null,100,TRUE,'FOR ALL COLUMNS SIZE AUTO'); --收集模式下某表统计信息
2、检查下meta_journal_entry_1表的je.Id列和另外个表的jae.jid列是否有索引,没有就创建索引
3、尝试在select后添加 /+optimizer_or_nbexp(2)/:
例如:select /+optimizer_or_nbexp(2)/ je.id as jeid ....
执行计划截图
看下执行计划,如果是走的哈希,可以试下走嵌套或者索引连接其他把结果集提前返回。