索引:索引用于快速找出某一列中特定值的行,对相关列使用索引,是提高select查询,最有效的途径.
一、使用索引:
1.对于多列索引,只要查询条件中,使用了最左边的列,才可以使用索引
2.对于使用like的查询,%不占用第一个字符,索引才可能使用
3.如果对大的文本进行搜索,使用全文索引,而不使用like"%...%"
4.如果列名是索引,使用coloum_name is null 将使用索引.
总之 对于BTREE索引,当使用 > 、=、<= .Between 、 != 、<>、 like”pattern”,*(其中pattern不以通配符开始 ) 都可以使用相关列上的索引
二、存在索引但是不使用索引
1.如果使用索引比全表扫描更慢,则不使用索引如 age>1 and age <100
2.用or分割开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及到的索引都不会用到
3.复合索引中,查询条件不是索引列的第一部分,放弃索引,进行全表扫描
4.如果like查询 条件是以%号开头 就放弃索引,进行全表扫描
5.如果列类型是字符串,一定记得在where条件中的常量用引号引起来,否则即使这个列上有索引,mysql也不会用到.