如何提高此SQL select查询的效率和性能

时间:2014-06-04 20:00:29

标签: sql sql-server performance

这个脚本非常慢。我怎样才能让它更快?它正在针对大量数据运行。

我需要找到一组字段应该具有相同值但不要的情况。

以下是查询的简洁示例:

CREATE TABLE #Example ( ID int, UserID int, ColA char(1), ColB char(1), ColC char(1), ColD  char(1))
INSERT INTO #Example VALUES (1, 1, 'A', 'B', 'C', 'D');
INSERT INTO #Example VALUES (2, 1, 'A', 'B', 'C', 'D');
INSERT INTO #Example VALUES (3, 1, 'A', 'B', 'C', 'D');
INSERT INTO #Example VALUES (4, 1, 'A', 'B', 'C', 'D');
INSERT INTO #Example VALUES (5, 1, 'A', 'B', 'C', 'X');

SELECT   UserID, ColA, ColB, ColC
FROM  ( SELECT DISTINCT a.UserID, a.ColA, a.ColB, a.ColC, a.ColD FROM #Example a ) x
GROUP BY UserID, ColA, ColB, ColC
HAVING COUNT(ColD) > 1

按原样,这会返回1行,这就是我想要的,它只是很慢。如果第5行中的X是D,则返回0行。

1 个答案:

答案 0 :(得分:0)

不确定它是否更快,但这里的查询与你的查询相同,更简洁。我认为你不需要子查询。

SELECT  UserID, ColA, ColB, ColC
FROM    #Example a
GROUP BY UserID, ColA, ColB, ColC
HAVING  COUNT(DISTINCT ColD) > 1;