【发布时间】:2014-01-21 09:09:34
【问题描述】:
我有一个数据库表,其中有一个 varchar(200) 列。
这是一个包含历史日志信息的表,其中表中大约 99.9% 的行包含与表中另一行相同的文本消息。
该数据库的大小和搜索速度正在成为问题。
所以我想我可以将 varchar 值移动到另一个具有唯一文本值的表中,然后在第一个表中的每一行都引用该表,但在我更改之前,我想知道是否有有更简单的方法吗?
例如,在我现有的表列上设置一些属性会自动导致这种行为。以便数据库自动维护具有唯一文本的表。我意识到这会对删除操作产生很大的性能影响,但无论如何这几乎从未做过。
另外,我真的很想避免更改插入日志表的程序。
我一直在使用 MySQL,但如果另一个数据库可以做到这一点,它也是一个将数据库更改为另一个的选项。 (MariaDB 还是其他?)
谢谢
【问题讨论】:
-
你想在这里实现什么 - 正常化或提高速度?
-
另外,如果这只是一个历史日志,你为什么要首先登录 MySQL?
-
我的第一个目标是减小数据库的大小。我需要在日志中搜索,这就是我使用数据库的原因。数据中还有时间戳和其他列。
-
您为什么不每天、每周或每月制作单独的表格?因为你现在会缩小尺寸,但是 3 个月呢?还是 6 个?