我的数据库中有一个类别树。我还有一个通过类别 ID 与树关联的项目表。
现在,我想列出特定类别中的所有项目及其子项及其子项等...
现在,我这样做:
- 检索所有相关类别的 id。
- 使用 WHERE 子句在 items 表中进行查询,如下所示: WHERE cat_id=2 OR cat_id=10 OR ...
如果我有很多类别,我认为这种方式会导致查询非常慢且非常长。有时搜索可以包含 100 个类别。
有更好的做法吗?
我的数据库中有一个类别树。我还有一个通过类别 ID 与树关联的项目表。
现在,我想列出特定类别中的所有项目及其子项及其子项等...
现在,我这样做:
如果我有很多类别,我认为这种方式会导致查询非常慢且非常长。有时搜索可以包含 100 个类别。
有更好的做法吗?
来自“在关系数据库中存储树”的 gugl:http: //mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
+1 关于
EXPLAIN select * from table
这将帮助您查看瓶颈。
也尝试代替
column1 = 1 or column1 = 2
就像是:
column1 in (1, 2)
但无论如何,如果没有索引,它就无济于事。