2010-07-19 2 views
0

Вот что я пытаюсь сделать. Я использую ejabberd с mod_logdb. Все разговоры регистрируются в таблице в базе данных с тегом даты.MySQL: запрос из неизвестного числа таблиц

например: logdb_messages_2010-7-17_server_node

То, что я пытаюсь сделать, это написать поиск, который будет искать во всех этих таблицах, не задев DB слишком много. Я хотел бы создать представление, которое берет все данные в таблице, чтобы я мог просто нажать.

Проблема: могут быть дни, у которых нет журналов и, конечно же, за несколько дней до начала регистрации.

Есть ли способ, который я могу каким-то образом использовать подстановочный знак, чтобы уловить их из MySQL? Мой другой другой, хотя и писал бы ежедневную работу cron, чтобы воссоздать представление, которое мне нужно.

+1

Могу ли я спросить, почему дизайн базы данных не просто использует столбец даты для хранения даты? Это сделало бы вещи в сто раз проще. – Hammerite

+0

Хороший вопрос. Сейчас моя жизнь станет намного проще. Как это, mod_logdb сохраняет его таким образом. Я считаю, что сделать это проще, чтобы сохранить только количество логов в течение нескольких дней. –

ответ

2

Ничего себе, это старший антипас.

Вы должны запросить information schema, если только вы не можете контролировать схему и избежать ошибки в первую очередь.

Если вы не можете, вы должны динамически генерировать подготовленный оператор.

Это пример:

http://jayant7k.blogspot.com/2008/02/mysql-stored-procedures-dynamic-tables.html

0

Вы можете использовать Merge engine для упрощения выбора данных из нескольких таблиц.
Виды не улучшают производительность. Вы должны оптимизировать свои запросы и добавлять индексы necesarry для повышения производительности. Иногда редизайн схемы также является разрешением.

Смежные вопросы