13. 索引优化:常见问题
说明
本文以问答形式,阐述数据库索引使用须知。
问题 0:什么是索引?
索引的目的在于提高查询效率,可以类比字典,如果要查 mysql
这个单词,我们肯定需要定位到 m 字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词呢?或者ze开头的单词呢?是不是觉得如果没有索引,这个事情根本无法完成?
问题 1. 如何定位哪些页面需要加索引?
最简单直接方法是:往数据库里生成 100 万条数据,然后做黑盒测试。
数据有了以后,假装你是一个正常的用户,然后不断地点来点去,做各种操作,点赞、收藏、发文章、评论等,看看哪个动作或者页面加载很慢,就记录下来。
问题 2. 索引是越多越好吗?
虽说索引可以加速查询,但索引未必是越多越好,因为:
- 第一点、数据的增删都会涉及到随索引的修改,索引越多维护成本越高,所以频繁进行数据操作的表,不要建立太多的索引;
- 第二点、索引越多也意味着存储空间需要越大;
因为索引是有代价的,所以用不到的索引,也需要清理掉。<...>