【发布时间】:2016-01-22 14:24:19
【问题描述】:
我有一个包含大约 500k 行的日志表。
其中许多行是多余的(大约 50 条消息一次又一次地重复),所以我想按消息内容对它们进行分组。
但问题是我使用 MySQL 5.5 和这个版本的 InnoDB 引擎不支持全文索引。而且我无法使用 MyISAM,因为我正在使用外键。
我用 ORDER BY 子句尝试了这个,但花了大约 7 秒。
当我尝试使用 DISTINCT(message) 时,它在惊人的 300 毫秒内完成,但 DISTINCT 只给了我一列。
我应该如何使用 DISTINCT 以及所有其他列(如日期、id)构建 SELECT,但不影响性能?
【问题讨论】:
-
你能在字段上创建一个复合唯一索引吗?
-
@bernd-buffen 好吧,我希望消息像它们一样,我不希望它们在开始时被过滤。
-
请注意,DISTINCT 不是函数。
-
@strawberry 我是这样设计的。如果这个问题没有解决方案,我最终将不得不将其移植到 MyISAM 中
-
@Strawberry 现在我意识到我有外键,所以我不能使用 MyISAM