以下是SMAPLE查询。我怎样才能最佳地写出来?它正在扫描大约8000万条记录。它一起运行数小时没有任何结果
选择* FROM(SELECT组织,ROW_NUMBER()OVER(PARTITION BY empno,sal ORDER BY deptno DESC)AS row_num 来自emp)x 哪里 x.row_num = 1 和 x.organization!= 3
Beloe是我尝试过的,根本没有帮助..
deptno上的独特索引
COMPOSITE INDEX ON(empno,sal)
组织列上的附加NON-UNIQUE索引
我尝试将不等式条件重写为x.organization< 3或x.organization> 3没有运气
没有什么能帮助产生结果..他们查询只运行了几个小时没有结果
请咨询
答案 0 :(得分:0)
对于此查询:
SELECT *
FROM (SELECT empname,
ROW_NUMBER() OVER (PARTITION BY empno, sal ORDER BY deptno DESC) AS row_num
FROM emp
) x
Where x.row_num = 1;
最佳指数为emp(empno, sal, deptno desc)
。
尝试相关子查询可能会更快:
select e.*
from emp e
where e.deptno = (select max(e2.deptno) from emp e2 where e2.empno = e.empno and e2.sal = e.sal);
答案 1 :(得分:0)
我认为您需要empno, sal deptno
上的综合索引。
这将加快速度,因为订单将完成,数据库将不必进行排序
但我错了 - 解释计划会有所帮助