更多的索引并不意味着更高的性能。事实上,过多的索引在每一次对表进行DML操作时就意味着索引必须被更新,这样过多的索引会导致DML操作更慢,但是以下情况就是适合创建索引
经常用于where子句或者作为连接条件的列。
所含数据值范围比较的列
含有大量空值的列
绝大多数情况下只查询出其总记录2%-4%的表
以下情况不适合创建索引
表很小
列很少在查询中作为条件
绝大多数情况下查询出大于其总记录2%-4%的表
频繁更新的表,如果在某个表上创建多个索引,频繁的DML操作会耗费大量时间用于维护索引
优化:空值不包括在索引中,如果要优化表之间的连接,可以在外键列上创建索引,这要会提高与主键列匹配记录的速度