首页 > 数据库技术 > 详细

mysql高性能索引(Ⅰ)

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

在开发中,我们知道大多数应用的瓶颈在于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高性能索引(Ⅰ)

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!