7月 092018
 

 

索引滥用

 

表索引情况如下:

我们发现,buss_no 开头的索引就有三个,从名字上来看,是个类似于唯一号的字段,从buss_no 的索引类型来看,不是唯一索引,很可能就是不唯一的;但是,直觉判断,不能看像类型、状态之类的字段有超大的重复度。实际分析发现,每个buss_no 不会超过10条记录;对于这种情况,下面的两个buss_no开头的联合索引就是非常多余的,因为后面的两个联合索引总是先定位buss_no,在定位其他字段的;由于buss_no已经把结果集缩小到10条记录一下了,对于10条记录集的数据量完全可以自己在程序中进行排序、查找等处理,大可不必再创建联合索引,这样会导致索引很大,现在这个表的索引数据情况为:

不难发现,索引空间比表数据空间都大很多了

 

注意: 有些情况下,使用的覆盖索引和这种情况有些许类似,但不可等而视之

 

不给唯一性小的字段创建索引

如: 类型、状态字段,值往往只有很少的几个,创建索引的意义不大

如何忽略指定索引

面对已经存在了大量索引,如何验证使用索引和不使用索引的执行效率差别的大小呢?

直接删掉不想用的索引自然是个办法,但是我们的操作可能是线上的,随意删除和创建索引太不专业了;幸好mysql早就帮我们想好了,我们可以在sql语句中指定是否启用和禁用指定的索引:https://www.cnblogs.com/lcngu/p/6023179.html

 

参考:

 Posted by at 上午 10:47

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

(required)

(required)

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据