索引虽然是sql性能优化的利器,但是索引的维护也是需要成本的,所以创建索引,也要注意:
1. 索引应该建在查询应用频繁的字段在用于 where 判断、 order 排序和 join 的(on)字段上创建索引。
2. 索引的个数应该适量
索引需要占用空间;更新时候也需要维护。
3. 区分度低的字段,例如性别,不要建索引。
离散度太低的字段,扫描的行数降低的有限。
4. 频繁更新的值,不要作为主键或者索引
维护索引文件需要成本;还会导致页分裂,IO次数增多。
5. 组合索引把散列性高(区分度高)的值放在前面
为了满足最左前缀匹配原则
6. 创建组合索引,而不是修改单列索引。
组合索引代替多个单列索引(对于单列索引,MySQL基本只能使用一个索引,所以经常使用多个条件查询时更适合使用组合索引)
7. 过长的字段,使用前缀索引。
当字段值比较长的时候,建立索引会消耗很多的空间,搜索起来也会很慢。我们可以通过截取字段的前面一部分内容建立索引,这个就叫前缀索引。
8. 不建议用无序的值(例如身份证、UUID )作为索引
当主键具有不确定性,会造成叶子节点频繁分裂,出现磁盘存储的碎片化。
标签:前缀,哪些,创建,单列,主键,索引,MySQL,区分度 From: https://blog.51cto.com/u_16255459/7844159