使用“GROUP BY”时请求变得很长

问题描述 投票:0回答:1

我尝试优化我的网站,发现一些 SQL 查询很长(3-4 秒),当我几年前创建网站时,数据库是空的,所以我认为 SQL 请求很好,但现在我有 100,000 行,它非常慢.

这是要求:

SELECT c.*, p.*, COUNT(o.OrderID) as nb_total 
FROM orders o 
INNER JOIN products p on o.OrderProductID = p.ProductID 
INNER JOIN categories c on c.CategoryID = p.ProductCategoryID 
WHERE p.deleted = 0 
GROUP BY o.OrderProductID 
ORDER BY nb_total DESC 
LIMIT 10

我有 3 张不同的桌子:

  • 订单
  • 产品
  • 类别

这个请求是找到另外10个订购的产品,并从类别(颜色,图标),产品(名称,缩略图)中获取一些数据,并以此统计要订购的订单。

我有

ProductCategoryID
CategoryID
OrderProductID
的索引。

您能否解释一下为什么没有

GROUP BY
请求需要 0.00005 秒,而使用分组则需要 3 秒?我该如何修复这个问题?

sql mysql
1个回答
0
投票

现在我有 100,000 行,速度非常慢。

您正在选择

c.*
p.*
...表格中的每一列。然后,您通过网络将所有这些数据从数据库服务器发送到您的应用程序。

很可能,您只需要其中的几列...因此只需选择您需要的列。这将大大减轻数据传输负担,帮助事情进展得更快。

我知道您只需要此查询 10 行,因此这不是唯一的问题,但它是一个起点。更可能的是,最终的解决方案将为此查询设置索引。但由于我们看不到您的任何索引定义,这就是我们目前能为您做的。

© www.soinside.com 2019 - 2024. All rights reserved.