Index MySQL查询合理使用索引:别让你的数据库负重前行( 二 )


 
要测试是否使用索引对查询速度的影响,首先要把查询缓存给关掉,要不下次查询走了缓存,就对索引测试有影响了,如下,查询缓存已经关闭了:

Index MySQL查询合理使用索引:别让你的数据库负重前行

文章插图
 
我们使用语句show index from tb_user来查询现在表中建立索引的情况,发现现在一个索引也没有:
Index MySQL查询合理使用索引:别让你的数据库负重前行

文章插图
 
这时我们来查询一下:
Index MySQL查询合理使用索引:别让你的数据库负重前行

文章插图
 
通过主键来查询,才一百万条数据,就已经耗时将近1秒了,这是不能忍的,对于主键,我们来建立主键索引,看查询速度有什么变化:
Index MySQL查询合理使用索引:别让你的数据库负重前行

文章插图
 

Index MySQL查询合理使用索引:别让你的数据库负重前行

文章插图
 
建立主键索引耗时5.4秒,耗时这么久是因为要建立索引树,也就是B+Tree 。运行刚才那一条查询语句:
Index MySQL查询合理使用索引:别让你的数据库负重前行

文章插图
 
就在那一瞬间,数据就被查询出来了,效率高低一竿见影呀!
对用户名建立唯一索引,语句为ALTER TABLE tb_user ADD UNIQUE KEY (user_name):
Index MySQL查询合理使用索引:别让你的数据库负重前行

文章插图
 
保存了,重复的值,这是因为我改了其中的一个用户名,来验证唯一索引对改列值唯一性的要求 。把值改回来再重新建立唯一索引:
Index MySQL查询合理使用索引:别让你的数据库负重前行

文章插图
 
联合索引、普通索引和全文索引,按照上面写的建立索引的语句,都可以正确的为每列建立索引,大家动手试一下把!




推荐阅读