网站宣传文案范例,建设游戏运营网站开展工作总结,126企业邮箱注册申请,嘉兰图设计有限公司对mysql联合索引的认识 文章目录 对mysql联合索引的认识最左原则匹配一、最左匹配的原理#xff1f;二、实战 最左原则匹配
所谓最左原则指的就是如果你的 SQL 语句中用到了联合索引中的最左边的索引#xff0c;那么这条 SQL 语句就可以利用这个联合索引去进行匹配#xff…对mysql联合索引的认识 文章目录 对mysql联合索引的认识最左原则匹配一、最左匹配的原理二、实战 最左原则匹配
所谓最左原则指的就是如果你的 SQL 语句中用到了联合索引中的最左边的索引那么这条 SQL 语句就可以利用这个联合索引去进行匹配值得注意的是当遇到范围查询(、、between、like)就会停止匹配。 一、最左匹配的原理
最左匹配原则在遇到范围查询的时候就会停止匹配。
二、实战
题型一 如果sql为
SELECT * FROM table WHERE a 1 and b 2 and c 3;如何建立索引?
如果此题回答为对(a,b,c)建立索引片面了。 此题正确答法是(a,b,c)或者(c,b,a)或者(b,a,c)都可以重点要的是将区分度高的字段放在前面区分度低的字段放后面。像性别、状态这种字段区分度就很低我们一般放后面。
例如假设区分度由大到小为b,a,c。那么我们就对(b,a,c)建立索引。在执行sql的时候优化器会 帮我们调整where后a,b,c的顺序让我们用上索引。
题型二 如果sql为
SELECT * FROM table WHERE a 1 and b 2;如何建立索引?
如果此题回答为对(a,b)建立索引那都可以回去等通知了。 此题正确答法是对(b,a)建立索引。如果你建立的是(a,b)索引那么只有a字段能用得上索引毕竟最左匹配原则遇到范围查询就停止匹配。 如果对(b,a)建立索引那么两个字段都能用上优化器会帮我们调整where后a,b的顺序让我们用上索引。
题型三 如果sql为
SELECT * FROM table WHERE a 1 and b 2 and c 3;如何建立索引? 此题回答也是不一定(b,a)或者(b,c)都可以要结合具体情况具体分析。
拓展一下
SELECT * FROM table WHERE a 1 and b 2 and c 3;怎么建索引嗯大家一定都懂了
题型四 SELECT * FROM table WHERE a 1 ORDER BY b; 如何建立索引 这还需要想一看就是对(a,b)建索引当a 1的时候b相对有序可以避免再次排序 那么
SELECT * FROM table WHERE a 1 ORDER BY b;如何建立索引 对(a)建立索引因为a的值是一个范围这个范围内b值是无序的没有必要对(a,b)建立索引。
拓展一下
SELECT * FROM table WHERE a 1 AND b 2 AND c 3 ORDER BY c;怎么建索引?
题型五
SELECT * FROM table WHERE a IN (1,2,3) and b 1;如何建立索引
还是对(ab)建立索引因为IN在这里可以视为等值引用不会中止索引匹配所以还是(a,b)! 拓展一下
SELECT * FROM table WHERE a 1 AND b IN (1,2,3) AND c 3 ORDER BY c;如何建立索引此时c排序是用不到索引的。
**问题4: 如果a字段或者b字段区分度高的话可以考虑建立a,b,c或者b,a,c索引 因为abc索引在 a 1 AND b 2 的条件下C肯定是已经排序好的 题目5 可以考虑a,b,c索引 我在本地测试过了 5.7版本的mysql是可以用到c的 **
引用https://zhuanlan.zhihu.com/p/115778804