Надеясь, что кто-то здесь сможет дать какой-нибудь совет по 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
Сейчас ...
Я хочу выбрать все метки поиска в ОДНОЙ ветви дерева, которые ссылаются как минимум на ОДНУЮ запись в подмножестве записей, на которые ссылается ЕДИНАЯ поисковая метка в РАЗНОЙ ветви дерева.
Например, скажем, тег поиска "Рука" указывает на подмножество упражнений. Если на какое-либо из упражнений в этом подмножестве также ссылаются теги поиска из ветви «Мышцы» ПОИСКА, я бы хотел выбрать для них. Таким образом, мой запрос может потенциально вернуть «Бицепс», «Трицепс».
Два вопроса:
1) Как будет выглядеть запрос SELECT для чего-то подобного? (Если такая вещь вообще возможна без большого замедления. Я не уверен, с чего начать ...)
2) Есть ли что-то, что я должен сделать, чтобы настроить структуру данных, чтобы этот запрос продолжал выполняться быстро - даже если таблицы становятся большими?
Заранее спасибо за помощь, она очень ценится.