поиск связанного дерева php / Mysql и запрос элемента - PullRequest
1 голос
/ 09 мая 2011

У меня есть дерево категорий в моей базе данных.У меня также есть таблица элементов, связанных с деревом по идентификатору категории.

Теперь я хочу перечислить все элементы в определенной категории, ее дочерние элементы и их дочерние элементы и т. Д. *

На данный момент я продолжаю так:

  • Получить идентификатор всех соответствующих категорий.
  • Создайте запрос в таблице элементов с предложением WHERE, например: WHERE cat_id = 2ИЛИ cat_id = 10 ИЛИ ...

Я думаю, что таким образом запрос будет очень медленным и очень длинным, если у меня много категорий.Поиск может быть иногда в 100 категориях.

Есть ли лучшая практика?

1 Ответ

1 голос
/ 09 мая 2011

Из гугла по "хранению дерева в реляционной базе данных": http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

  • Список смежности прост, но не годится в большинстве сложных случаев
  • Вложенный набор сложен с первого взгляда (в основном во время записи), но он больше похож на стандарт для хранения и чтения деревьев в RDBM.

+ 1 о

EXPLAIN select * from table

это поможет вам увидеть узкие места.

Также попробуйте вместо

column1 = 1 or column1 = 2

что-то вроде:

column1 in (1, 2)

Но в любом случае без индексов это не помогло бы.

...