Поиск по нескольким таблицам одновременно

Vlad_R

Новичок
Поиск по нескольким таблицам одновременно

У меня 15 таблиц в базе MySQL с описаниями товаров. Таблицы довольно большие, примерно по 15 Мб каждая (будут расти).

Проблема заключается в том, как грамотнее организовать поиск по всем таблицам сразу. Уж очень не хочется делать 15 запросов select.

В каждой таблице по 5 полей: id, name, kodtovara, opisanie, techopisanie. Пользователь может искать по любым 4-ым полям (в т.ч. одновременно по всем). Т.е. делаем в запросе выборку:
PHP:
where (name LIKE "$name%" and kodtovara LIKE "kodtovara%" and opisanie LIKE "%opisanie%" and techopisanie LIKE "%techopisanie%")
Подскажите пожалуйста каким образом (самое оптимальное) организовать поиск по всем 15-ти таблицам?


PS Была идея посчитать сначала в каждой таблице count(ом) кол-во найденных записей и поместить их параметры id в массив (для каждой таблицы). А уж потом следующим запросом (только по тем таблицам в которых были записи) вытаскивать по найденным id.

Заранее благодарю за помощь.
 

Армян

Новичок
хм. возможно.

Если структура таблиц одинаковая почему бы не "свалить" все данные в одну таблицу? С каких соображений было сделано 15 "одинаковых" таблиц?
 

Vlad_R

Новичок
Автор оригинала: Армян
хм. возможно.

Если структура таблиц одинаковая почему бы не "свалить" все данные в одну таблицу? С каких соображений было сделано 15 "одинаковых" таблиц?
Просто как то не хочется делать таблицу под 200 Мб.
 

Gas

может по одной?
200MB это не много. Если структура таблиц одинаковая, то смысла разбивать на 15 таблиц нет, только лишние проблемы.
Что касается поиска, я бы попробовал сделать индексы на поля `name` и `kodtovara` раз % вначале не стоит, + fulltext индекс (`opisanie`,`techopisanie`) при этом убрав возможность отдельного поиска по этим полям.
Если нужно искать отдельно по `opisanie` и `techopisanie`, то сделать отдельные fulltext индексы.
Ну и наконец если скорость не будет удовлетворять - можно смотреть на sphinx.
 

Vlad_R

Новичок
Автор оригинала: Gas
сделать индексы на поля `name` и `kodtovara` раз % вначале не стоит, + fulltext индекс
Спасибо за совет. А где про индексы при поиске можно почитать?
 

Vlad_R

Новичок
Автор оригинала: Армян
Гугл знает где :)
Он все знает. :) Мне бы где потолковее написано...

-~{}~ 31.07.08 20:52:

Автор оригинала: Gas
можно смотреть на sphinx.
Интересно..., сейчас изучаю, возможно это очень хорошее решение.

-~{}~ 31.07.08 22:57:

Кстати, sphinx работает только на отдельном сервере или виртуальный хостинг для него тоже подойдет?
 
Сверху