2010-07-19 7 views
0

Voici ce que j'essaie de faire. J'utilise ejabberd avec mod_logdb. Toutes les conversations sont enregistrées dans une table de la base de données associée à la date.MySQL: requête à partir du nombre inconnu de tables

ex: logdb_messages_2010-7-17_server_node

Ce que je suis en train de faire est d'écrire une recherche qui va chercher dans toutes ces tables sans toucher le DB trop. Je voudrais créer une vue qui prend toutes les données dans la table afin que je puisse juste frapper cela.

Le problème est qu'il peut y avoir des jours qui n'ont pas de journaux et, bien sûr, des jours avant que nous commencions la journalisation.

Y at-il un moyen que je peux en quelque sorte utiliser un caractère générique pour les accrocher à partir de MySQL? Mon autre autre serait d'écrire un travail quotidien cron pour recréer la vue dont j'avais besoin.

+1

Puis-je demander pourquoi la conception de la base de données n'utilise pas seulement une colonne de date pour stocker la date? Cela rendrait les choses cent fois plus simples. – Hammerite

+0

Bonne question. Cela me rendrait la vie beaucoup plus facile maintenant. Tel qu'il est, mod_logdb le stocke de cette façon. Je pense que c'est pour rendre plus facile de ne garder que X jours de journaux. –

Répondre

0

Vous pouvez utiliser Merge engine pour simplifier la sélection des données de plusieurs tables.
Les vues n'améliorent pas les performances. Vous devez optimiser vos requêtes et ajouter des index necesarry pour améliorer les performances. Parfois, une refonte du schéma est aussi une solution.