繁体   English   中英

优化mysql慢查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM