Вообщем, есть связка - товар, группа.
У товара может быть одна основная группа и н-ое колиечество групп владельцев, по группе нужно вытаскивать товары (редко такое вообще бывает в моей практике).
Сделал следующее, таблица продукты имеет следующее столбцы, грубо говоря
`id`, `productTitle`, `groups`, где `groups` есть поле типа tinytext.
В ней хранится примерно следующее: 2,4,6,7
Вытащить товары по группе легко, запрос вида
EXPLAIN select * from `catalogProducts` WHERE 6 IN (`groups`);
Но, не используются индексы. Так как товаров там будет немного, всего порядка трех сотен, то запрос обрабатываться быстро.
Вопрос, можно ли заставить использовать индексы?
Есть конечно вариант с таблицей связкой:
`productId` (primary key), `groupId` (index)
И последующие джойны, но это уже большие расходы, по сравнению с простым селектом, или я ошибаюсь? Кто как решает эту задачу?
У товара может быть одна основная группа и н-ое колиечество групп владельцев, по группе нужно вытаскивать товары (редко такое вообще бывает в моей практике).
Сделал следующее, таблица продукты имеет следующее столбцы, грубо говоря
`id`, `productTitle`, `groups`, где `groups` есть поле типа tinytext.
В ней хранится примерно следующее: 2,4,6,7
Вытащить товары по группе легко, запрос вида
EXPLAIN select * from `catalogProducts` WHERE 6 IN (`groups`);
Но, не используются индексы. Так как товаров там будет немного, всего порядка трех сотен, то запрос обрабатываться быстро.
Вопрос, можно ли заставить использовать индексы?
Есть конечно вариант с таблицей связкой:
`productId` (primary key), `groupId` (index)
И последующие джойны, но это уже большие расходы, по сравнению с простым селектом, или я ошибаюсь? Кто как решает эту задачу?