如何通过索引让 SQL 查询效率最大化
什么时候创建索引?
如果出现如下情况,可以创建索引。
- 字段的数值唯一性的限制 索引可以起到约束的作用,比如唯一索引,主键索引,都可以起到唯一约束的作用。当字段的数值唯一时,可以考虑建立唯一索引或者主键索引。
- 频繁作为 Where 查询条件的字段 在表数据量比较大的时候,某个字段在 SQL 查询的 where条件时,就学英语给这个字段创建索引。
SELECT comment_id, product_id, comment_text, comment_time, user_id FROM product_comment WHERE user_id = 7851
运行结果
运⾏时间为0.699s,你能看到查询效率还是⽐较低的。当我们对user_id字段创建索引之后,运⾏时间为 0.047s,不到原来查询时间的1/10。
- 经常需要 Group By 和 Order By 的列
索引就是让数据按照某种顺序进行存储或检索,因此当我们使用 Group By 对数据查询或者使用 Order By 对数据进行排序的时候,就需要对分组或者排序字段建立索引。
SELECT user_id, count(*) as num FROM product_comment group by user_id limit 100
运⾏结果(100条记录,运⾏时间1.666s)
对 user_id 创建索引,再执行 SQL 语句
SELECT user_id, count(*) as num FROM product_comment group by user_id limit 100
运⾏结果(100条记录,运⾏时间0.042s):
image
- DISTINCT 字