为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
sql如下:
SELECT TBIROW_HZB,TBICOL_LZB,TBCELL_DX02,TBCELL_DX03,TBCELL_DX08,TBCELL_DX07 FROM TBCElL JOIN TBIROW ON (TBCELL_HNM=TBIROW_HNM AND TBCELL_DYNM = TBIROW_DYNM) JOIN TBICOL ON (TBCELL_LNM=TBICOL_LNM and TBCELL_DYNM = TBICOL_DYNM) WHERE TBCELL_DYNM=‘32b9ddfc-0e8d-49c9-90de-7d82b8df5d1e’ and TBCELL_DX02 is not null and TBCELL_DX03 is not null and TBCELL_DX08 is not null and TBCELL_DX07 is not null AND (TBCELL_DX02 ||TBCELL_DX03 ||TBCELL_DX08 ||TBCELL_DX07 ||TBCELL_QSDX) IN (SELECT TBCELL_DX02 ||TBCELL_DX03 ||TBCELL_DX08 ||TBCELL_DX07 ||TBCELL_QSDX FROM TBCELL WHERE TBCELL_DYNM='32b9ddfc-0e8d-49c9-90de-7d82b8df5d1e’AND TBICOL_POS=‘L’ AND TBICOL_TYPE=‘Y’ and TBCELL_DX02 is not null and TBCELL_DX03 is not null and TBCELL_DX08 is not null and TBCELL_DX07 is not null GROUP BY TBCELL_DX02 ||TBCELL_DX03 ||TBCELL_DX08 ||TBCELL_DX07 ||TBCELL_QSDX HAVING COUNT(*)>1) ORDER BY TBCELL_DX02,TBCELL_DX03,TBCELL_DX08,TBCELL_DX07, TBIROW_HZB,TBICOL_LZB;
表结构件附件,
sql文本.txt
在select后面加个hint试试,
enable_index_join(0)
1.考虑是否是统计信息问题
2.通过et定位哪个操作符慢
DM8_SQL语言使用手册.pdf - 》
附录 3 系统存储过程和函数 -》 13 et
有具体使用方法介绍
从执行计划来看应该是挺快的,可以考虑清掉该语句相关的执行计划的缓存,重新生成执行计划再测试
begin
for RS in (select cache_item from v$cachepln where sqlstr like ‘%语句%’) loop
CALL SP_CLEAR_PLAN_CACHE(RS.cache_item);
end loop;
end;