我发现以下内容有点令人困惑......如果我执行以下查询,当按索引值“关键字”排序时,需要 0.0008 秒,但当按“计数”排序时,需要 3 秒以上。
以下过程大约需要 0.0008 秒:
SELECT keyword, COUNT(DISTINCT pmid) as count
FROM keywords
WHERE (collection_id = 13262022107433)
GROUP BY keyword
order by keyword desc limit 1;
这需要 3 秒多的时间:
SELECT keyword, COUNT(DISTINCT pmid) as count
FROM keywords
WHERE (collection_id = 13262022107433)
GROUP BY keyword
order by count desc limit 1;
按计数排序时,有没有办法加快结果集的排序速度?真的需要那么长的时间吗?还有其他选择吗?引擎是InnoDB。
非常感谢您的投入!
您可能需要添加额外的索引来协助计数阶段。
ALTER TABLE keywords ADD INDEX ckp_index (collection_id,keyword,pmid);
如果您已经有一个仅包含 collection_id 和关键字的复合索引,查询优化器仍将包含对表中 pmid 字段的查找。
通过添加这个新索引,这将删除任何表扫描并仅执行索引扫描。
这将加快查询的 count(distinct pmid) 部分。
试一试 !!!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)