MySQL何时使用索引与不使用索引?(2)

增加注明:当查询条件字段相同时,使用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(*)   改为辅助索引。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3ac1981426c481716eefd2600292af64.html