作家
登录

干货满满,SQL优化经验总结34条~

作者: 来源: 2017-11-10 09:13:36 阅读 我要评论

如今, 假设 EMP_TYPE 是一个字符类型的索引列.

两者的差别在于, 前者 DBMS 将直接跳到第一个 DEPT 等于 4 的记录而后者将起首定位到 DEPTNO=3 的记录并且向前扫描到第一个 DEPT 大年夜于 3 的记录。

SELECT … FROM EMP WHERE EMP_TYPE = 123

这个语句被 ORACLE 转换为:

SELECT … FROM EMP WHERETO_NUMBER(EMP_TYPE)=123

因为内部产生的类型转换, 这个索引将不会被用到! 为了避免 ORACLE 对你的 SQL 进行隐式的类型转换, 最好把类型转换用显式表示出来. 留意当字符和数值比较时, ORACLE 会优先转换数值类型到字符类型

(31) 须要当心的 WHERE 子句

某些 SELECT 语句中的 WHERE 子句不应用索引. 这里有一些例子.

鄙人面的例子里, (1)‘!=’ 将不应用索引. 记住, 索引只能告诉你什么存在于表中, 而不克不及告诉你什么不存在于表中. (2) ‘||’是字符连接函数. 就象其他函数那样, 停用了索引. (3) ‘+’是数学函数. 就象其他数学函数那样, 停用了索引. (4) 雷同的索引列不克不及互比拟较, 这将会启用全表扫描.

(32)

a. 如不雅检索数据量跨越 30% 的表中记录数,应用索引将没有明显的效力进步。

b. 在特定情况下, 应用索引也许会比全表扫描慢, 但这是同一个数量级上的差别。而平日情况下,应用索引比全表扫描要块几倍甚至几千倍!

(33) 避免应用消费资本的操作

履行消费资本的排序 (SORT) 功能。DISTINCT 须要一次排序操作, 而其他的至少须要履行两次排序。 平日, 带有 UNION, MINUS, INTERSECT 的 SQL 语句都可以用其他方法重写。 如不雅你的数据库的 SORT_AREA_SIZE 调配得好,应用 UNION , MINUS, INTERSECT 也是可以推敲的,毕竟它们的可读性很强。

(34) 优化 GROUP BY

进步 GROUP BY 语句的效力, 可以经由过程将不须要的记录在 GROUP BY 之前过滤掉落。下面两个萌芽返回雷同结不雅但第二个明显就快了很多。

低效:

以上就是 SQL 优化经验总结 34 条的全文介绍, 欲望对您进修和应用 Oracle 有所赞助。

【编辑推荐】

  1. MongoDB数据库入门的5个简单步调
  2. 开源NoSQL数据库:ArangoDB入门指南
  3. 关系数据库迈入新时代,这个标题是卖力的!
  4. MySQL数据库渗入渗出及马脚应用总结
  5. 细说碉堡机与数据库审计
【义务编辑:庞桂玉 TEL:(010)68476606】

  推荐阅读

  润乾软件和永洪科技签订战略合作协议

Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践【51CTO.com稿件】2017年11月8日,润乾软件和永洪科技举办了计谋合作签约典礼。出席签约典礼的有润乾软件开创人蒋步星、>>>详细阅读


本文标题:干货满满,SQL优化经验总结34条~

地址:http://www.17bianji.com/lsqh/38694.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)