索引优化原则 1 数据类型的选择 数据类型越小越好,越简单越好,避免null值 2 索引的列顺序 索引的列顺序很重要,例如index(a, b),当where中有a或a、b时,索引会被使用,但只有b时则不会被使用。因为a是这个组合索引的引导列,缺少引导列则索引不会被调用(这点不是非常确定,有的是这样有的不是这样,需要根据不同数据库不同版本来看,具体可以通过查询计划查看)。 索引列的顺序应该和其被使用率相关,使用率越高的列,应该越往前面放。 3 聚集索引、B+树、主键 一个表只能有一个聚集索引,聚集索引以B+树形式存储,所以,聚集索引的规则决定了索引存放的物理顺序(聚集索引对需要最快速缩小查询访问及最快速进行字段排序时,非常有用),需要特别注意。 Mysql的聚集索引就是主键,主键与聚集索引不能分离。 Mssql的聚集索引不一定是主键,主键与聚集索引可以不一样,可通过clustered声明。 在可能的情况下,应当分别设计主键和聚集索引,因为聚集索引有非常好的查询性能。 4 聚集与非聚集索引的使用情况概述 动作描述 聚集索引 非聚集索引 列经常被分组、排序 √ √ 返回某范围内的数据 √ × 频繁更新的列 × √ 主、外键列 √ √ 频繁修改索引列 × √ 5 使用索引需要避免的一些操作 5.1 Or 5.2 否定查询 5.3 模糊查询 5.4 避免null