我尝试优化我的网站,发现一些 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 秒?我该如何修复这个问题?
现在我有 100,000 行,速度非常慢。
您正在选择
c.*
和 p.*
...表格中的每一列。然后,您通过网络将所有这些数据从数据库服务器发送到您的应用程序。
很可能,您只需要其中的几列...因此只需选择您需要的列。这将大大减轻数据传输负担,帮助事情进展得更快。
我知道您只需要此查询 10 行,因此这不是唯一的问题,但它是一个起点。更可能的是,最终的解决方案将为此查询设置索引。但由于我们看不到您的任何索引定义,这就是我们目前能为您做的。