oracle用WHERE替代ORDER BY
ORDER BY 子句只在两种严格的条件下使用索引. ORDER BY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序. ORDER BY中所有的列必须定义为非空. WHERE子句使用的索引和ORDER BY子句中所使用的索引不能并列. 例如: ????? 表DEPT包含以下列: ??????? DEPT_CODE??? PK??? NOT NULL ??????? DEPT_DESC?????????? NOT NULL ??????? DEPT_TYPE?????????? NULL ??? ?????? 非唯一性的索引(DEPT_TYPE) ???? 低效: (索引不被使用) ??????????? SELECT DEPT_CODE ??????????? FROM DEPT ??????????? ORDER BY DEPT_TYPE ? ?????EXPLAIN PLAN: ??????????? SORT ORDER BY ????????????????? TABLE ACCESS FULL ???? 高效: (使用索引) ?????????? SELECT DEPT_CODE ?????????? FROM DEPT ??????? WHERE DEPT_TYPE > 0 ??? EXPLAIN PLAN: ????? TABLE ACCESS BY ROWID ON EMP ???????????? INDEX RANGE SCAN ON DEPT_IDX ? ????? ORDER BY 也能使用索引! 这的确是个容易被忽视的知识点. 我们来验证一下: SQL>? select * from emp order by empno; Execution Plan ---------------------------------------------------------- ?? 0????? SELECT STATEMENT Optimizer=CHOOSE ?? 1??? 0?? TABLE ACCESS (BY INDEX ROWID) OF ‘EMP‘ ?? 2??? 1???? INDEX (FULL SCAN) OF ‘EMPNO‘ (UNIQUE) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- flash cookie(二)【详尽解读Flex通信方法】
- c# – 我应该在哪里阅读我的WCF服务的用户名和密码?
- ruby-on-rails – BrowserCMS和Paperclip
- BootLoader
- cocos2dx中的Director类中的getInstance()方法解析,即单
- U-BOOT for Mini6410 移植
- FLEX4 Tree代码触发节点选择
- 如何将TextBox集中在C#Metro应用程序的AppBar中?
- Cocos2d-x-3.6 用户交互原理---------如何通过JNI连接Java和
- ruby-on-rails – 在Mongoid / rails 3中查询嵌入的对象(“