[英]Optimizing mysql slow query
下面的查询从20lacs记录运行耗时超过2.5秒;
SELECT lid,nid ,sum(nview) as view_cnt FROM nv WHERE lid = 1 GROUP BY nid ORDER BY view_cnt desc LIMIT 20;
我更新了可能的索引键,请帮助我优化此查询
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE nv ref lid lid 4 const 406282 "Using where; Using temporary; Using filesort"
您可以尝试在查询中使用的所有列上添加索引:
ALTER TABLE nv ADD INDEX lnv(lid,nid,nview)
因此,mysql使用索引中的列值,而不是仅对行查找使用索引。 您应该在额外说明栏中看到其他using index
。 它可能可以稍微加快查询速度,但是不要奢望太多,在这种情况下,如果不更改表架构,文件排序是不可避免的。
如果您决定使用此索引,则可以安全地删除单个lid
列上的索引,因为复合索引也可以用于盖子查找。
您仅索引了lid列,可以将索引添加到nid列并验证查询执行时间
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.