码迷,mamicode.com
首页 > 数据库 > 详细

mysql高性能索引(Ⅰ)

时间:2016-05-24 17:07:02      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:mysql   高效索引   

在开发中,我们知道大多数应用的瓶颈在于sql语句的执行时耗,在这里并不讨论sql语句的安全,仅仅讨论高性能sql语句,而与高性能sql语句紧密相连的就是传说中的----索引。

索引--一种工作在存储引擎端的用于快速找到记录的一种数据结构。

mysql使用索引的方式是:先找到索引的值,再根据索引的值找到数据行。

索引之B-Tree索引

B-Tree索引通常意味着所有的值都是按顺序存储的,每个叶子节点到根的距离相同。图示:

技术分享

B-Tree索引能够快速的访问数据,因为存储引擎不需要进行全表扫描来获得数据,理论上B-Tree的搜索时间复杂度不超过O(㏒2(M))。

本文测试用例:

表:tbprofitshop 

字段数:15

记录数:20w

关于B-Tree索引的一些限制:

⑴.如果不是按照索引的最左前缀索引,则无法使用索引。主索引:id,普通索引:fdPhone

如:技术分享

而这样则会使用索引:

技术分享

⑵.不能跳过索引中的列。主索引:id,联合索引:(fdPhone,fdCreate),如:

技术分享

此处跳过fdPhone而直接利用fdCreate,查询则无法使用索引。

  ⑶.如果查询中有某列的范围查询,则其右边所有列都无法使用索引优化查询。主索引:id,联合索引:(fdPhone,fdCreate)。如:

技术分享

注:在开发中,经常看见数字类型的字符串,然后大火就直接使用数字类型了。数据应与字段类型匹配,在这个例子中fdPhone是字符类型,我们以数字类型使用看看如何:

技术分享 

再以字符串类型来看看是怎样的:

技术分享  

ALL:在索引构建中,索引构建的顺序似乎很重要,它往往是索引高效与否的关键所在。

本文出自 “岁月” 博客,请务必保留此出处http://moron.blog.51cto.com/9245572/1782567

mysql高性能索引(Ⅰ)

标签:mysql   高效索引   

原文地址:http://moron.blog.51cto.com/9245572/1782567

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!