Mysql搜索效率提升之创建索引

Posted 全栈收容所

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql搜索效率提升之创建索引相关的知识,希望对你有一定的参考价值。

简介

关联

SELECT    

    phone_number 

FROM    

    phone_book 

WHERE    

    first_name = 'Teacher' AND    

    last_name = 'Cang';


这个写起来很容易,在数据量不大的时候查询速度很快,但数据库必须扫描表的所有行,直到找到该行为止,如果表有数百万行而没有索引时,则检索数据会耗费很多的时间。

索引的介绍

    索引是一种数据结构,例如B-Tree,这种数据结构是需要额外的写入和存储为代价来提高表上数据检索的速度。一旦建立了索引后,数据库中查询优化器使用索引来快速定位数据,然后就无需扫描表中给定查询的每一行了。

    其中。当使用主键或唯一键创建表时,mysql会自动创建名为PRIMARY的特殊索引, 该索引称为聚簇索引。PRIMARY索引是比较特殊的,这个索引本身与数据一起存储在同一个表中。另外除PRIMARY索引之外的其他索引称为二级索引或非聚簇索引。

索引使用与不适用对比

工具:Navicat

如果我们不设置索引、有主键时(当前表数据有55条):

可以看到,MySQL必须扫描包含55行的整个表,以查找当前查询的书籍。

现在我们去给他设置索引:

并再次执行上述语句:

这时候看到,MySQL只需要在键列中指示的nameIndex索引中找到1行而不扫描整个表。

总结

虽然建索引有好处,但是也有坏处。优缺点下一次发布。


以上是关于Mysql搜索效率提升之创建索引的主要内容,如果未能解决你的问题,请参考以下文章

MySQL之索引详解

MySQL之索引详解

MySQL之索引详解

MySQL之索引详解

MySQL提升效率之limit

怎么提高数据库查询效率