mysql索引相关

索引有主键索引、唯一索引、普通索引

单列索引,复合索引。

复合索引(a,b,c),可以理解是有三个索引,分别是a、b、c三个索引

前缀不是a的话,复合索引都不起作用,前缀用函数或者是范围,比如《、》、like的索引都不起作用。

如果复合索引中的一个用范围,后面的都不起作用,比如a=1 and b>1 and c=2,则c的索引不起作用

or:a=1 or d=2 则索引不起作用

and:a=1 and d=2 前面的索引起作用;b=1 and d=2  不起作用

单列索引:like “abc%” 起作用, like “%abc” 索引不起作用

复合索引有出现null值的列,整个复合索引失效。

不要在索引列上使用函数

不要在数据基数小的列上使用索引,比如性别只有0和1

应该创建索引的列有where、group by、order by、distinct、on 后面,范围语句,例如between、>、<、in、like(“xxx%”)

order by 后面的字段也应该出现再查询字段中,不然索引会失效,除了主键

如果列是字符串类型,传入条件是必须用引号引起来,不然索引会失效

count(1)或count(列)代替count(*)在mysql中没有差别了

一次查询只能用到一个索引

mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,

原文地址:https://www.cnblogs.com/3chi/p/8284497.html