私は次のMySQLテーブルarticle
とcategory
とcategory_article
を持っています。すべての記事はカテゴリ以上に属していてもよく、それは私のSQL
というクエリです。 GROUP BY
とORDER BY
に異なるカラムを用いORDER BY句とGROUP BY句の両方のインデックスを使用する方法は?
SELECT * FROM article a
LEFT JOIN category_article ca ON a.id=ca.aid
LEFT JOIN category c ON c.id=ca.cid
GROUP BY a.id
ORDER BY a.date DESC
WHERE c.status='1'
LIMIT 0,10
を使用することから、インデックスを妨げます。 私はこのクエリを高速化するために使用できる別のテクニックがあります。
各記事が少なくとも1つのカテゴリに属する場合は、代わりに「INNER JOIN」を作成することができます。これはすでに高速化しているはずです。 – Paul
なぜGROUP BYですか? (集計関数はありません) – jarlh
なぜこのクエリのカテゴリに参加しますか? –