MySQL查询不走函数的原因--最左匹配规则
原创MySQL在中查询索引的语句为:show index from table_name;
show index from student;
查询后结果:

每个字段的含义都可以在博客上查看:
如何查询Oracle、MySQL、SQL server中间表的索引_蓝星部队博客-CSDN博客
其中seq_in_index是索引中的列序列号,来自1开始吧。如果它是一个联合指数,它将来自。1起始、数值增量、联合指数一般不超过5列。
在大多数情况下,我们都在参与其中。mysql索引是在中创建的,但一些查询仍然很慢,并且在执行计划中根本没有使用该索引!
通常,某些字段可能没有索引,或者联合索引中的字段顺序与查询语句中的字段顺序不匹配。
联合索引时遵循最左边的原则,即。最左边的优先级,检索数据时匹配从最左边的联邦索引开始。
举个例子:
1,第一种情况:where在条件中使用联合索引的两个字段。--sno/sname,然后您可以在执行计划中看到该索引。查询速度也非常快。

2第二种情况:如果只查询联合索引中的第一个字段。sno,然后执行计划也被索引,非常快。


3第三种情况:如果只查询联合索引中的第二个字段。sname,则不会对执行计划编制索引,而是直接扫描整个表,这将减慢速度。


注意:我明显感觉到了查询速度的不同。如果使用联合索引0.003s,不使用联合索引3s,相差1000倍。
最后,如果联合指数3字段,分别A、字段B、字段C。查询时,如果只使用该字段。B和字段C作为条件,则不会使用该索引。
漫游索引的条件格式为:ABC(ACB/BAC/BCA/CAB/CBA,mysql将自动优化为第一个1种ABC)/AB/A
不漫游索引的条件格式为:C/BC
假设有这样一个索引--(a,b,c),用于以下项目5最左原理的解释,举例说明。
1.必须使用索引的第一个字段,例如select from table where b=b and c=c,将不会习惯于索引。
2.对于索引的第一个字段,使用like左边必须是固定值,而通配符只能出现在右边,如。select from table where a like %a%将不会用于索引,并且select from table where a like a%使用了该索引。
3.如果在字段之前添加函数或在字段之前嵌入表达式,则不使用索引。诸如此类select from table where trim(a)>1不会使用索引,select from table where a+1>1也不使用索引,而select from table where a>2将使用索引。
4.索引的使用是相关的where语句中字段的显示顺序与是否使用与索引相关的字段无关。诸如此类select from table where b=b and a=a还使用了索引。
5.使用到索引第一个字段的不等于表达式,即使其他字段不是索引字段也将使用索引。如select from table where a!=a and ddd=ddd将使用索引。
基于选择性创建索引:
列选择性:列属性值的唯一值越大,选择性越好,适合创建索引。例如身份证号码(1/14亿)>民族(1/56)>性别(1/2)选择性立刻降低。
条件选择性:条件范围越小,选择性越好。time>‘2000-01-01’好于time>‘2020-01-01’。
创建指数的字段的值不能是变化频繁的字段,银行卡余额不适合创建指数,卡号适合创建指数。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123




