【发布时间】:2017-10-30 15:47:08
【问题描述】:
为了获得计数,我必须在实时系统上运行这个相当简单的查询。问题是表和数据库的设计效率很低,而且由于它是一个实时系统,因此在这一点上它不是一个选项。
所以我必须找出一个运行速度很快并且不会让系统太慢的查询,因为在查询执行期间系统基本上停止了,这并不是我真正想要的 livesystem 做的,所以我需要简化我的查询,以使其在可接受的时间内执行。
SELECT id1, count(id2) AS count FROM table GROUP BY id1 ORDER BY count
DESC;
所以这里是查询,不幸的是它是如此简单以至于我对如何进一步改进它没有想法,也许其他人有一个想法......?
【问题讨论】:
-
您可以为 id1 列添加索引。
-
> 因为它是一个实时系统,在这一点上改变它不是一个选项
-
可能连一个索引(id1, id2)都有一个覆盖索引,那么MySQL就不用读取实际数据了。
-
更改表(添加索引正在更改)不是一种选择
-
看看 percona 工具,例如。 pt-online-schema-change 工具在更改时不会锁定表。或者 gh-ost...
标签: mysql database performance