1. 查看表数据类型是否合理,有无遵循选取数据类型越简单越小的原则(越简单越好,越小越好)
    2. 表中的碎片是否整理
    3. 表的统计信息是否收集
    4. 查看执行计划,检查索引的使用情况,如果没有用到索引则考虑创建
    5. 在创建索引之前,还要查看索引的选择性,判断该字段是否适合创建索引
      • 索引的选择性,指的是不重复的索引值(基数,cardinality)和表记录数的比值。选择性是索引筛选能力的一个指标。索引的取值范围是 0—1 ,当选择性越大,索引价值也就越大。
    6. 创建索引后,再查看执行计划,对标结果查看是否提高了查询效率

    创建索引时考虑3个经常:

    1. 经常被查询的列(一般放在where条件后)
    2. 经常用于表连接的列
    3. 经常排序分组的列(order by或group by后面的字段)

    四个不要:

    1. 选择性低的字段不要创建索引(如性别、状态)
    2. 很少查询的列不要创建索引
    3. 大数据类型字段不要创建索引
    4. 尽量避免使用NULL,应该指定列为NOT NULL,如果有空值需求,可以使用空字符串

    索引的优点:

    1. 提高数据检索效率
    2. 提高聚合函数效率
    3. 提高排序效率
    4. 使用覆盖索引可以避免回表

    使用不到索引的情况:

    1. 通过索引扫描的行记录数超过全表的30%,优化器就不会走索引,而变成全表扫描
    2. 联合索引中,第一个查询条件不是最左索引列
    3. 联合索引中,第一个索引列使用范围查询,只能使用到部分列,有ICP出现
    4. 联合索引中,第一个查询条件不是最左前缀列
    5. 模糊索引条件列最左以通配符%开始
    6. 两个单列索引,一个用于检索,一个用于排序。这种情况下只能使用到一个索引。因为查询语句中最多只能使用一个索引,考虑建立索引联合
    7. 查询字段上面有索引,但是使用了函数运算