アプリのインデックス ページでは、MySQL-DB のテーブルからすべてのエントリを取得する必要があります。フィルターを設定することは可能ですが、最初は where-clause はWHERE 1=1
です。それは期待される結果を返しますが、EXPLAIN
インデックスが使用されていないため、クエリはかなり遅くなります。
これを解決する最善の方法は何ですか?
編集:
これがクエリです
SELECT
`Module`.`id`,
`Module`.`name`,
`Module`.`module_class_id`,
`Module`.`editor`,
`ModuleClass`.`name`,
`Editor`.`name`,
`ModuleClass`.`id`,
`Editor`.`id`,
`Mc`.`id`
FROM `Module`
LEFT JOIN `ModuleClass` ON (`Module`.`module_class_id` = `ModuleClass`.`id`)
LEFT JOIN `Editor` ON (`Module`.`editor` = `Editor`.`id`)
LEFT JOIN `Mc` ON (`Module`.`id` = `Mc`.`module_id`)
WHERE 1 = 1
GROUP BY `Module`.`id`
ORDER BY
`Module`.`id` DESC,
`ModuleClass`.`name` ASC,
`Editor`.`name` ASC
LIMIT 50
そして、これは説明の結果です:
そしてはい:ここでデータベースがインデックスを使用していることはあまり意味がないことを理解していますが、これは私にとってかなり一般的なケースであるように思われるので、問題に直面するためのベストプラクティスがあることを望みました