对于应用程序的索引页面,我需要从 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
这是解释的结果:
是的:我确实理解数据库在这里使用索引并没有太大意义,但是由于这对我来说似乎是一个相当普遍的情况,我希望有一个最佳实践来面对这个问题