私は次のクエリを持っています:
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を使用するとクエリが遅くなります)
しかし、私はこれをどのように行うかについての決定的な方法を完全に理解することはできませんか?