我有一个log
这样的表,可以将我的所有表的所有日志保存在我的 MySQL 数据库中:
+-------+-----------+-------------+-------------+-----------+--------+
| LogID | LogTypeID | LogDateTime | ReferenceID | TableName | UserID |
+-------+-----------+-------------+-------------+-----------+--------+
| 1 | 1 | 2012-10... | 1 | client | 1 |
| 2 | 1 | 2012-10... | 1 | plan | 1 |
| ... | ... | ... | ... | ... | ... |
+-------+-----------+-------------+-------------+-----------+--------+
当我Insert、Update或Delete时,该log
表将所有日志保存到由我的列标识的数据库中的表中。该列是我的列中标识的表的主键,我所有的主键都具有相同的类型,并且对于该列也是相同的。LogTypeID
ReferenceID
TableName
int(10)
ReferenceID
我总是使用我的log
表来识别何时插入此数据,因此我无法清除日志。
一开始我没有问题,但是现在log
由于数据很多,使用表时我的查询变得很慢。我尝试提高我的数据库服务器的性能,它变得比以前快一点,但仍然很慢。INNER JOIN
我对log
表格的大部分查询。
我正在考虑将外键添加到ReferenceID
所有使用该log
表的表中,因为我认为键可以提高我的查询性能,但我不确定它是否可行。
我可以让我的ReferenceID
列成为我所有表的外键吗?
我的数据库服务器是 MySQL Server 5.5.25,我的表都是 InnoDB。
请帮助,提前谢谢。