![]() |
Проблемы с подбором по параметрам(+)
У меня есть таблицы.
category(catID) item(itmID, catID) parameter(parID, catID) item_parameter(itmID, parID, itm_par_VALUE) Задача сделать подбор по параметрам. я делаю так: т.к. каждая позиция имеет n-параметров, значит для того чтобы выбрать позицию по условию AND для n-параметров нужно n-раз объединить саму на себя таблицу item_parameter. это решение весьма медленно, т.к. уже на 8-9 объединения запрос выполняется около секунды:( может быть есть иные решения(mysql 3.23.58). пример запроса: Код:
SELECT * cat_LEFT - левый ключ(структура nested sets, тут значения не имеет, т.к. это просто ограничивает категории, в которых ведется поиск). поля в которых стоит on, это поля чекбоксы, т.е. если такой параметр присутсвуте в этйо таблице — значит галочка установлена, а если его нет, то значит параметр не поддерживается позицией. само же значение параметра не важно в данном случае. p.s. чудеса происходят. только что снова прогнал тест. результат примерно: 0.01 - 0.02 :) p.p.s. также заменил условие «= 'on'» на «is not null». есть конечно варианты сделать часть работы на клиенте или даже закешировать что-то, но хотелось бы одним запросом, т.к. это менее геморно :) |
а решение оказалось простым:) спасибо доброму человку, подсказал:)
корректный псевдозапрос: Код:
SELECT * |
| Часовой пояс GMT +4, время: 22:54. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.