【发布时间】:2013-01-02 14:16:58
【问题描述】:
对于某个列的 DISTINCT 查询,我需要设置哪些索引才能尽快获得结果?
示例表列:
id INTEGER
name VARCHAR(32)
groupname VARCHAR(16)
我经常需要获取所有组的列表,
SELECT DISTINCT groupname FROM data ORDER BY groupname
该表可以有 > 200k 个条目,但只有大约十几个组。我不想为组名使用单独的表,因为数据通常是从 CSV 文件中导入的。
【问题讨论】:
-
嘿。你不能为组制作一个单独的表格,然后向提到的表格添加一个关系。这样您就可以从规范化中受益并解决您的问题!即使数据来自 CSV,您也可以使用像 talend 这样的优秀 ETL!
-
@mamdouh - 这将是理想的,但他提到他会尽可能避免这样做。
-
@EricPetroelje - 好的。这只是一个建议。无论如何,我认为添加一个可更新的视图将解决他的问题,不是吗!
-
@mamdouh - 因为他使用的是
DISTINCT,所以这里不可能有可更新的视图。物化视图将是一个不错的选择,但 MySQL 不支持这些.. -
@EricPetroelje - 我对可更新视图的意思是,只要组名更改不频繁。每当添加一个新组时,他就可以删除前一个组并添加一个新组。这样他就会保持更新。他第一次可以手动制作。只是一个想法。喜欢被讨论:)