
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
01.09.2013, 23:18:28
|
|||
|---|---|---|---|
|
|||
Фильтрация и подсчет товаров для EAV |
|||
|
#18+
Добрый вечер, гуру SQL, помогите идеей оптимизации подсчета товаров для фасеточного фильтра на EAV. Пока есть такая идея http://sqlfiddle.com/#!2/72872/6 , но она очень фигово выглядит. И пример запроса прямо сюда: Код: sql 1. 2. 3. запрос выбирает все возможные продукты при существующей фильтрации: 10 - это значение option1 и 6,8- значения option2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.09.2013, 23:26:50
|
|||
|---|---|---|---|
Фильтрация и подсчет товаров для EAV |
|||
|
#18+
zion03, Хм, впервые вижу, чтобы этот запрос писали через GROUP_CONCAT и FIND_IN_SET :) Обычно его пишут через IN и GROUP BY ... HAVING COUNT(*)=... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.09.2013, 23:44:08
|
|||
|---|---|---|---|
|
|||
Фильтрация и подсчет товаров для EAV |
|||
|
#18+
GROUP_CONCAT - это что первое в голову пришло. Как сделать выборку через GROUP BY ... HAVING COUNT(*)= понятно, а вот подсчет не очень. Если не сложно, можно пример через GROUP BY ... HAVING COUNT(*)= к запросу выше. Основная проблема для понимания - это учет зависимостей уже установленных фильтров, должна быть логика value_id IN (option_value1 or option_value1) AND pv.value_id IN (option_value2 or option_value2) т. е. OR если value из одной опции и AND из другой/соседней опции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.09.2013, 15:24:30
|
|||
|---|---|---|---|
|
|||
Фильтрация и подсчет товаров для EAV |
|||
|
#18+
Второй вариант такой: Код: sql 1. 2. 3. 4. 5. 6. 7. какой вариант лучше будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&mobile=1&tid=1836134]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 318ms |

| 0 / 0 |
