MySQL索引最左原则

MySQL索引最左原则,第1张

概述通过实例理解单列索引、多列索引以及最左前缀原则 实例:现在我们想查出满足以下条件的用户id: SELECT `uid` FROM people WHERE lname`='Liu' A

通过实例理解单列索引、多列索引以及最左前缀原则

实例:现在我们想查出满足以下条件的用户ID:

SELECT `uID` FROM people WHERE lname`='liu'  AND `fname`Zhiqun' AND `age`=26

因为我们不想扫描整表,故考虑用索引。

单列索引:


 

ALTER table people ADD INDEX lname (lname);
将lname列建索引,这样就把范围限制在lname='liu'的结果集1上,之后扫描结果集1,产生满足fname='Zhiqun'的结果集2,再扫描结果集2,找到 age=26的结果集3,即最终结果。

由于建立了lname列的索引,与执行表的完全扫描相比,效率提高了很多,但我们要求扫描的记录数量仍旧远远超过了实际所需要的。虽然我们可以删除lname列上的索引,再创建fname或者age 列的索引,但是,不论在哪个列上创建索引搜索效率仍旧相似。

多列索引:INDEX lname_fname_age (lame,fname,age);

为了提高搜索效率,我们需要考虑运用多列索引,由于索引文件以B-Tree格式保存,所以我们不用扫描任何记录,即可得到最终结果。

注:在MysqL中执行查询时,只能使用一个索引,如果我们在lname,age上分别建索引,执行查询时,只能使用一个索引,MysqL会选择一个最严格(获得结果集记录数最少)的索引。

最左前缀:顾名思义,就是最左优先,上例中我们创建了lname_fname_age多列索引,相当于创建了(lname)单列索引,(lname,fname)组合索引以及(lname,age)组合索引。

注:在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。

总结

以上是内存溢出为你收集整理的MySQL索引最左原则全部内容,希望文章能够帮你解决MySQL索引最左原则所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1151496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存