Выборка из многих таблиц

Norton

Новичок
Выборка из многих таблиц

Есть примерно 100-200 таблиц в базе Mysql.
Нужно сделать выборку всех записей по некоторому условию из всех таблиц однвременно.
Но если делать каждый селект в цикле отдельно для каждой таблицы то сильно тормозит. Где то 3 секунды на 900 селероне.
Выборка очень простая, просто все записи где дата удовлетворяет условию. Полей в таблице 5-6. В каждой разное количество.

Можно это дело как-то ускорить ? :rolleyes:
 

tony2001

TeaM PHPClub
>Можно это дело как-то ускорить ?
переделать структуру базы так, чтобы одинаковые таблицы были объединены в одну.
 

Verk

Guest
делать все одним запросом
http://www.mysql.com/doc/en/UNION.html

Что за база такая странная 100-200 таблиц ? Эти данные нельзаzкак-нибудь более компактно, скажем, в одну таблицу, разместить ?
 

Norton

Новичок
Объясню почему такая база вышла.

Пишем аукцион.
Есть много категорий товаров. Для каждой категории своя таблица. Почему ?
Потому что в каждой категории может быть разое количество полей. Некоторые стандартные для всех, а некоторые специфичные для каждой конкретной. Например в категории "Авто" могут быть поля "Пробег", "Объем двигателя", "Цвет" .
В категории "Компьютеры" могут быть поля "Видеокарта", "Процесор" и т.д. В категории "Процесоры" могут быть поля "Модель", "Фирма производитель" и.т.д...
В основном разнообразие полей нужно для сортировки и поиска по категориям.

Не придумали ничего лучшего чем разнести категории по разным таблицам.
 

InventOR^ULG

Новичок
ИМХО не проще ли было сделать так:
3 базы.
1. товар(id,naimenovanie,group_tovar,group_root_id,price,etc...)
2.характеристика(id,naim_harakt,tip_harakt(enum(1,2,3)))
3.параметры товара(id,id_tovar,id_harkt,h1 bigint(32),h2(text),h3(float))

правда 3я база будет расти ужасно, но зато выборка будет происходить быстро при правильных индексах, и нет ограничений на группы товаров и не нужно для каждого товара плодить новую группу и переписывать код :)
 
Сверху