|
|
|
| Здравствуйте
есть две таблицы
products и categories
нужно чтобы один товар находился в нескольких категориях
обычно для этого используют дополнительную таблицу с индексами товара и категории (depend)
я заметил что при достаточно большом количестве товаров запрос сильно тормозит БД
вопрос, на сколько разумно сделать поле categories в таблице products где хранить ИД категорий через занятую и запросы для товаров делать такого плана
SELECT * FROM products WHERE 2 IN (categories) - выборка товаров второй категории
если учесть что категории для одного товара в большинстве случаев только 1 и для некоторых товаров их может быть несколько - но точно всегда меньше 10
будет ли такой запрос при условии что товаров несколько десятков тысяч проходить быстрее чем запрос
SELECT p.* FROM products p, depend d WHERE d.child=p.id AND d.parent=2 | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(14.10.2013 в 15:50)
| | >я заметил что при достаточно большом количестве товаров запрос сильно тормозит БД
Возможно не индексированы запросы и не оптимизирована сама СУБД?
>вопрос, на сколько разумно сделать поле categories в таблице products где хранить ИД категорий через занятую и запросы для
>товаров делать такого плана
Будет еще хуже в плане производительности и удобства - СУБД не предназначена для такого способа хранения данных. Будет во-первых дико неудобно редактировать такие строки, во-вторых это будет медленнее, чем операции с набором цифр. | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(14.10.2013 в 15:50)
| | > обычно для этого используют дополнительную таблицу с индексами товара и категории (depend)
Вы не забыли добавить в нее составной первичный индекс на оба поля? | |
|
|
|