【发布时间】:2010-02-02 19:48:30
【问题描述】:
希望这里有人能够提供一些mysql建议...
我正在开发一个分类搜索标签系统。我有如下表格:
EXERCISES
exerciseID
exerciseTitle
SEARCHTAGS
searchtagID
parentID ( -> searchtagID)
searchtag
EXERCISESEARCHTAGS
exerciseID (Foreign key -> EXERCISES)
searchtagID (Foreign key -> SEARCHTAGS)
搜索标签可以排列在任意深度的树中。因此,例如,我可能有一棵看起来像这样的搜索标签树......
Body Parts
Head
Neck
Arm
Shoulder
Elbow
Leg
Hip
Knee
Muscles
Pecs
Biceps
Triceps
现在...
我想选择树的一个分支中的所有搜索标签,这些搜索标签引用了树的不同分支中的单个搜索标签所引用的记录子集中的至少一条记录。
例如,假设搜索标签“Arm”指向练习的子集。如果该子集中的任何练习也被来自 SEARCHTAGS 的“肌肉”分支的搜索标签引用,我想为它们选择。所以我的查询可能会返回“二头肌”、“三头肌”。
两个问题:
1) SELECT 查询这样的事情会是什么样子? (如果这样的事情甚至可以在没有造成很多减速的情况下发生。我不知道从哪里开始......)
2) 我应该做些什么来调整我的数据结构以确保此查询将继续快速运行 - 即使表变大了?
提前感谢您的帮助,非常感谢。
【问题讨论】: