一如果可以尽量选择全值匹配
create index index_1_2 on tabname(1,2)
select * from tabname where 1=***and 2=*
这个是建立索引的最好的情况
二最佳左前缀法则
这里是指的是在一个复杂的索引在被查询使用的使用的时候(这样说并不准确)先确定索引钱定义的字段
三在索引列上不做任何操作(计数,函数 ,自动/手动转换)会导致索引失效,导致全表扫描。
四 存储引擎不能使用索引中范围条件中范围条件右边的列
五 mysql在使用不等于的时候无法使用索引会导致全表扫描
六 is not null 也无法使用索引,但是is null 可以使用索引。
七 like 以通配符开头的(‘%dfghj%’)mysql索引会失效。
八 字符串不加单引号索引失效
关于子查询的索引优化
1,保证被驱动的表的join字段建立了索引
2,left join 时小表作为驱动表,大表作为驱动表。
3 join 时mysql回见结果集小 的作为驱动表
4子查询尽量不要放在被驱动表,有可能使用不到索引
5尽量不要用 not in 或者not exit
关于order by
1 无过滤不不索引
在查询中没有where条件或者指点显示的字段名会导致索引失效
2排序错,必排序
在排序中要么desc,要么asc
3方向反比排序
关于group by
1基本上和order by一样,唯一的区别是没有用到索引,也可以直接使用索引。