【发布时间】:2016-01-08 12:08:02
【问题描述】:
我有一个基于本教程的分类表:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
表格的结构真的很简单:
id, lft, rgt
这是查询:
SELECT c . *, (COUNT(DISTINCT(parent.id))) AS level
FROM categories AS parent, categories AS c
WHERE c.lft
BETWEEN parent.lft
AND parent.rgt
GROUP BY c.id
ORDER BY c.lft
如您所见,同一张表被使用了两次。有一个 between 子句,它有 group by 和 order by。
我完全不确定应该如何优化它。
当对此使用 EXPLAIN 时,我得到:
Using index; Using temporary; Using filesort
【问题讨论】:
-
让我们看看整个
EXPLAIN。让我们看看SHOW CREATE TABLE。运行这个:FLUSH STATUS; SELECT ...; SHOW SESSION STATUS LIKE 'Handler%';并告诉我们表中有多少行以及结果集中有多少行。
标签: mysql optimization query-optimization