作家
登录

SQL优化器究竟帮你做了哪些工作?

作者: 来源: 2017-12-15 13:09:35 阅读 我要评论

OR操作符

即就是简单的谓词,如不雅它们与其他谓词之间为OR操作,对优化器而言是异常艰苦的,除非在多索引拜访,才有可能介入到一个索引片的定义,尽量不要用。

比如如下萌芽

假设一个谓词典剖断结不雅为false,而此时不检查其他谓词就不克不及肯定的将一行记录清除在外,那么这类谓词对优化器而言就是十分艰苦的。

BT谓词


比如只有and 操作符,那么所有的简单谓词都可以称呼BT谓词,也就是好的谓词,除非拜访路径是一个多索引扫描,不然只有BT谓词可以参加定义索引片。

谓词值不肯定

比如谓词典值采取了函数,或者介入了计算,优化器在做静态SQL绑定的时刻,每次都须要从新盘似揭捉?择,无法缓存,消费大年夜量的CPU,也无法介入索引列的匹配。

五、过滤因子

匹配列肯定了应用那些索引列,但索引片的厚度(也就是估计要拜访若干行),还没有估算出来。此处须要进行经由过程过滤因子来肯定。

过滤因子描述的谓词典选择性,即表中知足谓词前提的记录行数所占用的比例,依附于列值分布情况。

1、单个谓词典过滤因子

比如,我们的的test表有10000笔记录,谓词user_name 匹配了 一个索引列,其过滤因子是0.02%(1/不合user_name数量=user_name中有5000个不合值的比率),则意味着萌芽结不雅会包含2行的记录。

  1. select * from test where user_name=’test’ 

检查索引列,大年夜头到尾依次检查索引列,查看以下规矩:

  1. 在where子句中,该列是否至少拥有一个足够简单的谓词与之对应?如不雅有,则这个列就是匹配列。如不雅没有,那么这个列及厥后面的索引列都长短匹配列。
  2. 谓词是否是一个范围谓词,如不雅是,那么残剩的索引列都长短匹配列。
  3. 对于最后一个匹配列之后的索引列,如不雅拥有一个足够简单的谓词与其对应,那么该列为过滤列。

2、组合谓词典过滤因子

当有多个谓词相符匹配列的时刻,我们可以经由过程单个谓词典过滤因子推导出组合过滤因子。一般的公式是:

  • 组合过滤因子=谓词1过滤因子*谓词2过滤因子....
  1. select * from test where user_name=’test’ and sex=1 and age =10 

包含3个谓词,user_name、sex、age、个中user_name有5000个不合的值,sex有2个不合的值,age有40个不合的值。

则每个谓词典过滤因子:

  • FF(user_name) =1/5000*100 =0.02%
  • FF(sex) =1/2*100=50%
  • FF(age) =1/40*100=2.5%
  • 组合过滤因子=0.02%*50%*2.5%=0.025%

经由过程以上组合过滤因子,可以推算出最终的结不雅集=10000*0.025%=0.25 ~=1 

SQL优化器毕竟帮你做了哪些工作?

SQL优化器毕竟帮你做了哪些工作?

二、谓词

like 谓词

SQL优化器毕竟帮你做了哪些工作?

经由过程以上过滤因子评估之后,我们可以看到,最终须要查找的结不雅集只须要获取3行就够了,这对数据库的磁盘拜访有很高的机能晋升。

这也是优化器在评估可选拜访路径成时,必须先辈行过滤因子评估的重要性。

六、排序

物化结不雅集意味着经由过程履行须要的数据库拜访来构建结不雅集。最好情况下,只须要返回一笔记录,而最坏的情况下须要返回多笔记录,须要提议大年夜量的磁盘攫取。而排序就是个一一种。

在以下情况中,一次fetch调用只须要物化一笔记录,不然短卺不雅进行排序的时刻就须要物化全部结不雅集。

没有排序需求,比如order by,group by 等。

固然须要排序知足以下两个前提:

  • <!--存在一个索引知足结不雅集的排序需求,比瘸老述的(id_name_sex) 或者(name_sex_age)-->
  •  <!--优化器决定以传统的方法应用这个索引,即拜访第一条知足前提安的说银行并攫取响应的表行,然后拜访第二条知足前提的索引行并攫取响应的表行,依次类推。-->
  •  <!--比如应用索引(name_sex_age)时刻,select * from test where user_name=’test’ order by sex ,此时在索引中,结不雅集基于sex本身就是有序的-->

      推荐阅读

      宏碁4K专业显示器开卖:sRGB色域可达130%

    开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 据外媒报道,宏碁近日推出一款型号为PE320QK Pro的专业显示器,该款显示器屏幕屏幕比例为惯例的16:9设计,大年夜小为31.5英寸,分>>>详细阅读


    本文标题:SQL优化器究竟帮你做了哪些工作?

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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