SQL Server DECLARE语句阻止查询执行

时间:2016-09-09 12:18:33

标签: sql-server tsql

我们在SQL Server 2012上运行的查询看起来像这样:

SELECT *
FROM (   
  SELECT ROW_NUMBER() OVER (ORDER BY t1.DateEntered DESC) AS RowNumber,
  MANY_FIELDS
  FROM MANY_JOINED_TABLES
  WHERE MANY_CONDITIONS 
) AS sub1
WHERE RowNumber BETWEEN (0 + 1) AND (0 + 10)
ORDER BY RowNumber

执行大约需要3-4秒。

我希望最后一个WHERE子句中的1和10是变量,但是当我在语句之前使用DECLARE来声明变量(甚至是一个从未使用过的随机变量)时,查询只是旋转和旋转而永远不会完成。

要清楚,除了第一行之外,这段代码完全相同:

DECLARE @x int

SELECT *
FROM (   
  SELECT ROW_NUMBER() OVER (ORDER BY t1.DateEntered DESC) AS RowNumber,
  MANY_FIELDS
  FROM MANY_JOINED_TABLES
  WHERE MANY_CONDITIONS 
) AS sub1
WHERE RowNumber BETWEEN (0 + 1) AND (0 + 10)
ORDER BY RowNumber

关于为什么的任何想法?

0 个答案:

没有答案