在SQL中,使用DISTINCT如何影响性能?

时间:2009-02-06 16:42:34

标签: sql ms-access performance

我正在尝试选择一个不同的列表,其中在多个字段上创建重复项。例如,

SELECT tablename.field1Date, 
       tablename.field2Number, 
       tablename.field3Text 
FROM tablename;

将分别在日期,数字和文本字段中选择重复记录。

现在,当我选择不同的记录来提供我想要的内容时,性能似乎会急剧下降。

SELECT DISTINCT tablename.field1Date,
                tablename.field2Number, 
                tablename.field3Text 
FROM tablename;

有没有已知原因?我必须承认我正在使用MS Access 2003,这可能是个问题。

3 个答案:

答案 0 :(得分:10)

是的,基本上它必须对结果进行排序,然后重新处理以消除重复。这种剔除也可以在排序期间完成,但我们只能推测代码在后台运行的准确程度。您可以通过创建由所有三(3)个字段组成的索引来尝试提高性能。

答案 1 :(得分:4)

此页面提供了有关提高查询性能的提示以及有关使用性能分析器的一些信息。它会告诉你如果需要任何索引会是什么。

http://support.microsoft.com/kb/209126

答案 2 :(得分:1)

是的,应用程序需要将每条记录与“不同”记录缓存进行比较。您可以使用索引来提高性能,尤其是在数字和日期字段上。