|
|
|
| Как организовать поддержку неограниченного числа категорий для записей?
Подскажите или дайте информацию где это можно почитать.
Мне пришло на ум только одно оптимальное решение:
хранить id в строке: ,1,68,12,56,...,1001,
и выбирать с помощью LIKE при запросе определенной категории, так
(pole_gde_ishem like '%,",1001,",%')
Но меня интересует более быстрый способ. Так как записей в базе более 2000, категорий может быть от 4 до 200 может быть в процессе и больше появится.
Выборка (поиск) с помощью FULLTEXT - медленнее чем LIKE. | |
|
|
|
|
|
|
|
для: vbps
(02.08.2011 в 04:44)
| | Нет строка плохая идея, тем более одним like не обойтись, придется обрабатывать ситуации нахождения числа в начале, конец строки, одного числа - в общем будет очень медленно. Обычно вводят дополнительную третью таблицу - в одном столбце хранят номер записи, в другом - номер категории. Сколько связей - столько и записей в таблице. Внешне это выглядит громоздко и объемно, но на самом деле занимает гораздо меньше места и работает шустрее, чем вариант со строками. | |
|
|
|
|
|
|
|
для: cheops
(02.08.2011 в 09:09)
| | Пробовал такой подход. Создал таблицу:
id ...
tid - id записи
cid - id категории
получилось более 300.000 записей, а скорость выполнения не увеличилась, моментами даже кажется все только хуже.
Сейчас попробую еще раз, может что то упустил. | |
|
|
|
|
|
|
|
для: vbps
(02.08.2011 в 13:49)
| | индексы есть? | |
|
|
|
|
|
|
|
для: Valick
(02.08.2011 в 13:50)
| | Конечно, иначе смысл работы с числовыми значениями | |
|
|
|
|
|
|
|
для: vbps
(02.08.2011 в 13:52)
| | покажите таблицы и запросы | |
|
|
|