为什么这个嵌套的 SQL 代码这么慢
Why is this nested SQL code so slow
在 SQL 服务器 2016 中使用 ADODB 记录集 - 此代码 运行 比我只执行 select 查询和 慢得多然后通过遍历记录集手动进行聚合。有什么想法吗?
SELECT SUM(wk1) AS wk1, SUM(wk2) AS wk2, SUM(wk3) AS wk3
, SUM(recCount) AS recCount, MIN(Segment) AS Segment, Bucket
FROM (
SELECT *, 1 AS recCount, NTILE(8) OVER (ORDER BY NEWID()) AS Bucket
FROM [Data]
WHERE (1 = 1 AND [Area] = 'EAST') AND Segment = 2
) AS q
GROUP BY Bucket
好像是
NTILE(8) OVER (ORDER BY NEWID())
件。如果我改为使用
(ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) % 8) + 1
好像快多了。
在 SQL 服务器 2016 中使用 ADODB 记录集 - 此代码 运行 比我只执行 select 查询和 慢得多然后通过遍历记录集手动进行聚合。有什么想法吗?
SELECT SUM(wk1) AS wk1, SUM(wk2) AS wk2, SUM(wk3) AS wk3
, SUM(recCount) AS recCount, MIN(Segment) AS Segment, Bucket
FROM (
SELECT *, 1 AS recCount, NTILE(8) OVER (ORDER BY NEWID()) AS Bucket
FROM [Data]
WHERE (1 = 1 AND [Area] = 'EAST') AND Segment = 2
) AS q
GROUP BY Bucket
好像是
NTILE(8) OVER (ORDER BY NEWID())
件。如果我改为使用
(ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) % 8) + 1
好像快多了。