MySQL DISTINCT更多专栏

时间:2016-01-22 14:24:19

标签: mysql group-by distinct

我有一个大约500k行的日志表。

其中许多行都是多余的(大约50条消息一次又一次地重复)所以我想按消息内容对它们进行分组。

但问题是我在这个版本中使用MySQL 5.5和InnoDB引擎不支持全文索引。我无法使用MyISAM,因为我正在使用外键。

我用ORDER BY子句尝试了这个,但花了大约7秒钟。

当我尝试使用DISTINCT(消息)时,它在惊人的300毫秒内完成,但DISTINCT只给了我一列。

我应该如何使用DISTINCT以及所有其他列(如date,id)构建SELECT,但不会损害性能?

1 个答案:

答案 0 :(得分:0)

如果您的消息有很多重复,您可能希望将它们分成“查找”表。我想如果你不能在这个查找表中的消息上放置一个UNIQUE索引,你只需要在代码中强制执行它,甚至可以不时地执行一些清理。

messages
--------
id
user_id
date
...
text (INT FK to message_text.id)

message_text
------------
id
text

那么你就不会一遍又一遍地重复消息文本,但messages中的几行可以引用相同的文本。