Быстрый поиск в 500 таблицах

Rigor

Профессор
Регистрация
1 Июн 2008
Сообщения
203
Реакции
35
Такая проблема, не могу придумать как сделать быстрее.

Есть 500 таблиц одной структуры в бд MySql. В каждой табилце в среднем по 1500 записей. Нужно для каждой позиции одной(выбранной из 500) таблицы сделать поиск по остальным 499 таблицам.

Как сделать лучше(т.е. быстрее) соединить все таблицы с помошью sql запроса(типа SELECT * FROM и тут перечислить все таблицы) и искать в ней, либо искать в каждой таблице отдельно и сохранять результаты в один массив?

Заранее спасибо, надеюсь, понятно объяснил
 
Насолько часто данные будут изменяться? Возможно стоит покопать в сторону Sphinx и создания индекса для поиска.
 
В среднем у вас данных меньше чем на миллион. Для базы данных это не много. Если данные не часто обновляются можно и общую таблицу с нужными данными сделать.
Либо составить большой запрос через Для просмотра ссылки Войди или Зарегистрируйся (без ALL работает медленнее, почитайте разницу) - работает так же быстро, я бы остановился на нем. Единственно, нужно потюнить настройки mysql, в частности запись table_open_cache.

А вообще пробуйте, тестируйте, и оптимизируйте :)
 
Как сделать лучше(т.е. быстрее) соединить все таблицы с помошью sql запроса(типа SELECT * FROM и тут перечислить все таблицы) и искать в ней, либо искать в каждой таблице отдельно и сохранять результаты в один массив?
Всё правильно делаешь, только зачем соединять все таблицы, а потом уже искать, лучше - соединяй все результаты, т.е. в каждый запрос к каждой таблице добавляй своё условие, и между собой union (all) и всё
 
Назад
Сверху