首页 > 解决方案 > 分组、排序和计数 MySQL 性能

问题描述

我有下一个查询要在一个地方获得 15 个最畅销的盘子:

此查询需要 12 秒来执行超过 100,000 行。我认为这个执行时间太长了,所以我正在寻找一种优化查询的方法。

我在 PHPMyAdmin 上运行了解释 SQL 命令,我得到了这个:[![在此处输入图像描述][1]][1]

据此,主要问题出在扫描整个表的 p 表上,但我该如何解决呢?p表的id是主键,是否也需要设置为索引?另外,我还能做些什么来使查询运行得更快吗?

标签: mysqlgroup-bycountsql-order-by

解决方案


您可以在两个表之间建立关系。 https://database.guide/how-to-create-a-relationship-in-mysql-workbench/

除此之外,您还可以使用左连接,这样您就不会加载整个右表。Order by 在 MySQL 中是一个缓慢的功能,如果您之后使用代码,您可以在比 order 快得多的代码中执行它经过。

我希望我有所帮助,社区可以随时编辑:)


推荐阅读