SQL’where’子句中的条件的执行顺序
发布时间:2020-12-12 16:43:28 所属栏目:MsSql教程 来源:网络整理
导读:我在我的where子句中有一组条件 WHERE d.attribute3 = 'abcd*' AND x.STATUS != 'P' AND x.STATUS != 'J' AND x.STATUS != 'X' AND x.STATUS != 'S' AND x.STATUS != 'D' AND CURRENT_TIMESTAMP - 1 x.CREATION_TIMESTAMP 首先执行以下哪些条件?我正在使用or
我在我的where子句中有一组条件
WHERE d.attribute3 = 'abcd*' AND x.STATUS != 'P' AND x.STATUS != 'J' AND x.STATUS != 'X' AND x.STATUS != 'S' AND x.STATUS != 'D' AND CURRENT_TIMESTAMP - 1 < x.CREATION_TIMESTAMP 首先执行以下哪些条件?我正在使用oracle. 我在执行计划中会得到这些细节吗? 解决方法你确定你没有权限去看执行计划吗?如何使用AUTOTRACE?SQL> set autotrace on SQL> select * from emp 2 join dept on dept.deptno = emp.deptno 3 where emp.ename like 'K%' 4 and dept.loc like 'l%' 5 / no rows selected Execution Plan ---------------------------------------------------------- ---------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| ---------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 62 | 4 (0)| | 1 | NESTED LOOPS | | 1 | 62 | 4 (0)| |* 2 | TABLE ACCESS FULL | EMP | 1 | 42 | 3 (0)| |* 3 | TABLE ACCESS BY INDEX ROWID| DEPT | 1 | 20 | 1 (0)| |* 4 | INDEX UNIQUE SCAN | SYS_C0042912 | 1 | | 0 (0)| ---------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - filter("EMP"."ENAME" LIKE 'K%' AND "EMP"."DEPTNO" IS NOT NULL) 3 - filter("DEPT"."LOC" LIKE 'l%') 4 - access("DEPT"."DEPTNO"="EMP"."DEPTNO") 可以看到,这给出了关于如何执行查询的很多细节.它告诉我: >将在EMP的全面扫描上首先应用条件“emp.ename like”K%“” 这个应用顺序与在WHERE子句中排除谓词的方式无关,我们可以用这个重新排序的查询来显示: SQL> select * from emp 2 join dept on dept.deptno = emp.deptno 3 where dept.loc like 'l%' 4 and emp.ename like 'K%'; no rows selected Execution Plan ---------------------------------------------------------- ---------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| ---------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 62 | 4 (0)| | 1 | NESTED LOOPS | | 1 | 62 | 4 (0)| |* 2 | TABLE ACCESS FULL | EMP | 1 | 42 | 3 (0)| |* 3 | TABLE ACCESS BY INDEX ROWID| DEPT | 1 | 20 | 1 (0)| |* 4 | INDEX UNIQUE SCAN | SYS_C0042912 | 1 | | 0 (0)| ---------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - filter("EMP"."ENAME" LIKE 'K%' AND "EMP"."DEPTNO" IS NOT NULL) 3 - filter("DEPT"."LOC" LIKE 'l%') 4 - access("DEPT"."DEPTNO"="EMP"."DEPTNO") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |