我需要设置什么索引才能尽快获得特定列上的 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/