0

これが私がやろうとしていることです。mod_logdb で ejabberd を使用しています。すべての会話は、日付でタグ付けされたデータベース内のテーブルに記録されます。

例: logdb_messages_2010-7-17_server_node

私がやろうとしているのは、DB にあまりアクセスせずにこれらすべてのテーブルを検索する検索を作成することです。テーブル内のすべてのデータを取得するビューを作成して、それをヒットできるようにしたいと思います。

問題は、ログがない日があり、もちろん、ログを開始する前の日もあるということです。

ワイルドカードを使用して MySQL からこれらを取得する方法はありますか? 私のもう1つの方法は、必要なビューを再作成するために毎日のcronジョブを作成することです。

4

2 に答える 2

2

うわー、それはシニア アンチパターンです。

そもそもスキーマを制御して間違いを回避できない場合を除き、情報スキーマを照会する必要があります。

できない場合は、準備済みステートメントを動的に生成する必要があります。

これは例です:

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

于 2010-07-19T12:27:59.557 に答える
0

マージ エンジンを使用して、複数のテーブルからのデータの選択を簡素化できます。
ビューはパフォーマンスを向上させません。パフォーマンスを向上させるには、クエリを最適化し、必要なインデックスを追加する必要があります。スキーマの再設計が解決策になる場合もあります。

于 2010-07-19T12:31:43.057 に答える