log
MySQLデータベース内のすべてのテーブルのすべてのログを保存する次のようなテーブルがあります。
+-------+-----------+-------------+-------------+-----------+--------+
| LogID | LogTypeID | LogDateTime | ReferenceID | TableName | UserID |
+-------+-----------+-------------+-------------+-----------+--------+
| 1 | 1 | 2012-10... | 1 | client | 1 |
| 2 | 1 | 2012-10... | 1 | plan | 1 |
| ... | ... | ... | ... | ... | ... |
+-------+-----------+-------------+-------------+-----------+--------+
列で識別されるデータベースのテーブルに挿入、更新、または削除すると、テーブルにすべてのログが保存さlog
れます。この列は、私の列で識別されたテーブルの主キーです。すべてのPrimayキーは同じタイプであり、列でも同じです。LogTypeID
ReferenceID
TableName
int(10)
ReferenceID
このデータがいつ挿入されたかを識別するために常にlog
テーブルを使用しているため、ログをクリアできません。
最初は問題ありませんが、log
データが多いため、テーブルを使用するとクエリが遅くなります。データベースサーバーのパフォーマンスを改善しようとすると、以前より少し速くなりますが、それでも低速です。テーブルINNER JOIN
への私のクエリのほとんど。log
キーによってクエリのパフォーマンスが向上する可能性があるため、テーブルを使用するすべてのテーブルに外部キーを追加することを考えていましたが、それが実現可能かどうかはわかりません。ReferenceID
log
ReferenceID
列をすべてのテーブルの外部キーにすることはできますか?
私のデータベースサーバーはMySQLServer5.5.25で、テーブルはすべてInnoDBです。
よろしくお願いします。