增加注明:当查询条件字段相同时,使用OR范围查询索引可以执行,反之,索引失效。
例如:
SELECT * from table_name WHERE name= "A" OR ;(生效)
SELECT * from table_name WHERE name= "A" OR sex="男";(失效)
误区
1.并不是在where条件常用的列上加上索引,一条语句只会走一个索引。
2.在多列建立索引,查询哪一列,都将发挥作用? 满足左前缀要求
联合索引 index(A1,A2,A3)
where A=1 (生效)
where A=1 and where A2=2 (生效)
where A=1 and where A2=2 and where A3=3 (生效)
where A=2 where A3=3 (不生效)
where A=1 and where A2>2 and where A3=3 (A1,A2生效,A3不生效)
where A=1 and where A2 like 'jay%' and where A3=3 (A1,A2生效,A3不生效)
SQL优化
1.limit分页优化
2.聚集索引:主键、没有主键则定位第一个唯一索引(所有行的值非空)、如果上2个条件都不满足则自动产生一个6字节的id聚集索引。
3.辅助索引:包含键值的书签,会存储书签数据。
4.count(*) 改为辅助索引。