我有以下查询:
SELECT *
FROM products
INNER JOIN product_meta
ON products.id = product_meta.product_id
JOIN sales_rights
ON product_meta.product_id = sales_rights.product_id
WHERE ( products.categories REGEXP '[[:<:]]5[[:>:]]' )
AND ( active = '1' )
AND ( products.show_browse = 1 )
AND ( product_meta.software_platform_mac IS NOT NULL )
AND ( sales_rights.country_id = '240'
OR sales_rights.country_id = '223' )
GROUP BY products.id
ORDER BY products.avg_rating DESC
LIMIT 0, 18;
在省略ORDER BY
部分的情况下运行查询,查询运行时间约为 90 毫秒,ORDER BY
部分和查询需要约 8 秒。
我浏览了 SO 并发现其原因可能是在返回所有数据之前执行排序,而不是我们应该ORDER BY
在结果集上运行?(参见这篇文章:使用 ORDER BY 时的慢查询)
但我无法弄清楚我如何做到这一点的明确方法?