为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:
sql执行计划如下,表总数59w,ora_path 这个字段过滤很低,加上order by 的时候执行2s多,不加毫秒级别
在字段order_submit_dt 建一个索引,执行很快
加hint执行指定索引,执行也是毫秒级别。
但奇怪的是第一次加了索引之后,不加hint执行计划会走这个索引,索引删除重建之后,执行计划不加hint指定,执行计划就不会走索引。收集统计信息和清空缓存都不行
不加order by的时候取一个first rows(100行)的数据满足你这个like条件就返回了,实际上全表扫描没有做完。
加了order by之后因为要对结果排序所以需要把全部数据都算完再排序。
另外你加了索引hint后走sscn其实就是消除了排序的耗时,我按照这个顺序去取满足like的条件的数据,因此如果你要对比SQL的执行效率,需要把所有结果都加载完。
ora_path && order_submit_dt 加组合索引后再看看。