使用索引一定能提升效率吗?(什么时候适合创建索引,什么时候不适合创建索引?)
答案是不一定,任何事物我们都应该辩证的看,知道其运行逻辑从而利用其优点,尽量避开它的缺点。在上面我们已经和大家介绍了过了索引带来的优缺点,那接下来就和大家分享几个建索引的提示。
- 对于查询中使用的少的字段尽量不要创建索引,创建索引是有成本的,空间占用、创建和维护成本、增删改效率降低。
- 对于数据密度小的列也不建议创建索引,因为InnoDB中索引的B+树所决定的,你能带来的效率提升非常有限。(但是也有例外,举个例子枚举值(1,2,3),头两个占比百分之1%,第三个占比99%,并且头两个搜索占比比第三个高很多,那么是可以建议加索引的)。InnoDB的辅助索引是存在回表的,如果数据密度过小,那么性能可能还不如全表扫。像上面这种场景具有特殊性,也说明一个道理,在大多数场景下建议可能适用,但是也有不适用的时候,我们不要把这种建议当作铁律。