目录
前述:
在了解mysql索引机制时,组合索引提到了遵循最左前缀原则,所以对此进行了了解,在此记录
对于我们的sql有没有使用索引,可以使用explain关键字来查看sql语句的执行计划,可以通过explan关键字来查看当前sql是否使用索引
详述:
由上面所说的,最左原则一般作用用于mysql中的组合索引中的
假设现在创建一个表mytable,且创建a,b,c组合索引,索引名为abc,
CREATE TABLE mytable ( `a` int(11), `b` VARCHAR(32), `c` VARCHAR(32),INDEX mytable_abc (`a`,`b`,`c`) );
下面我们根据上面的mytable_abc组合索引,来说下"最左前缀原则".
- 上面创建组合索引时,第一个字段为a
根据最左前缀原则,在sql的where后,必须使用字段a作为条件,则可使用组合索引。例如:总的来说,就是where后要有字段a作为条件,才会使用索引,只有a作为条件,至于a在where中出现的先后顺序,则不影响select * form mytable where a = 1 select * form mytable where a = 1 and b = 'hehe' select * form mytable where a = 1 and c = 'heihei' select * form mytable where c = 'heihei' and b = 'hehe' and a = 1 ...
如果where条件中不带a,只有b或者c,则在查询时,则不会使用索引。例如:select * form mytable where b = 'hehe' select * form mytable where c = 'heihei' and b = 'hehe'
- 在where中使用字段a进行like查询时,用like时左边必须是固定值,通配符只能出现在右边,则使用索引。例如:
而通配符在右边时,则不会使用索引,例如:select * from mytable where a like '1%';#此时a为varchar类型
select * from mytable where a like '%1';#此时a为varchar类型
总述:
以上便是mysql中最左前缀原则及其使用注意的地方,其实最核心的地方也在其名字上了:最左,前缀。
注意的是:在组合索引中,对于索引的使用,需要用到最左前缀原则哦。