运行 SQL 查询 - 超时

Ehs*_*ani 3 sql t-sql sql-server timeout

SELECT TOP 1 * 
FROM URLForPosting WITH(nolock) 
WHERE status = 0 
ORDER BY newid()
Run Code Online (Sandbox Code Playgroud)

这是当我在代码中运行时出现超时的查询,即使当我在 SQL Server 上运行它时也会出现超时。

但是当我这样做时

SELECT TOP 1 * 
FROM URLForPosting WITH(nolock) 
WHERE status = 0 
Run Code Online (Sandbox Code Playgroud)

它运行得很好。

另外,第一个查询运行良好,直到前 6 条记录缺少记录,总共缺少 8 条记录,现在它超时了?我已经创建了状态索引。

有什么建议么?

Ada*_*Dev 5

返回随机记录的另一种方法是使用TABLESAMPLE. 看看它的表现如何:

SELECT TOP 1 * 
FROM URLForPosting TABLESAMPLE(1) WITH(nolock) 
WHERE status=0 
ORDER BY newid()
Run Code Online (Sandbox Code Playgroud)

TABLESAMPLE在 SQL Server 2005 及更高版本中可用。