我需要设置什么索引才能尽快获得特定列上的 DISTINCT 查询的结果?

示例表列:

id        INTEGER
name      VARCHAR(32)
groupname VARCHAR(16)

每隔一段时间我都需要得到所有组的列表,
SELECT DISTINCT groupname FROM data ORDER BY groupname

该表可以有 > 200k 个条目,但只有大约十几个组。我不想为组名使用单独的表,因为数据通常是从 CSV 文件导入的。

最佳答案

在这种情况下,groupname 上的索引应该会给你最好的结果。

如果这还不够好,可以考虑更多的选项 - 首先,您可以缓存该查询的结果,以便仅在绝对必要时才运行它。其次,您可以创建一个单独的表来存储 groupname 值并通过插入触发器填充它(这将避免必须更改您的 CSV 导入过程)

关于MySQL:快速 DISTINCT 查询的索引?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14123643/

10-12 18:33