上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.4 关于索引的建议
索引并不是越多越好,创建索引虽然会提高查询性能,但是会降低写入性能,因为在写入数据时需要维护索引数据,以保证所有索引都是最新的、最准确的。如果是唯一索引,为了保证唯一性,每次修改都会检查唯一行,在REPEATABLE READ隔离级别下,出现死锁的概率也会大大增加。同时,索引也会占用更多的物理存储,所以在创建索引时,一定要权衡利弊,确保性能最大化。
以下几种情况需要创建索引。
● 经常用作查询条件的列。
● 经常用于表连接的列。
● 经常排序分组的列。
● 业务上具有唯一性的字段添加成唯一索引。
● 经常同时出现作为条件的列可以创建联合索引。
● 如果经常有通过某个字段作为条件查另一个字段的情况,则可以考虑为这两个字段添加联合索引进行优化(具体实验可参考2.2.4节)。
索引的注意事项主要包括以下几点。
● 不在低基数列上创建索引,如性别字段。
● 不在索引列进行数学运算和函数运算,因为对索引字段执行函数操作可能会导致无法使用索引。
● 索引不宜过多,单表索引过多不仅占空间,还会影响数据修改的效率。
● 在创建联合索引时,把选择性最大的列放在联合索引的最左边。