如何编写高效查询以确定列中的1个或多个值是否为10+。我知道我可以计算值,但这将扫描所有记录。以下是我到目前为止的情况:
SELECT COUNT(*) FROM MyTable WHERE [state] = 12 AND age > 110
我希望此查询在找到超过110的第一个人不扫描整个表时停止。这可能吗?
答案 0 :(得分:2)
所以你希望得到标量布尔结果?任何行匹配条件
时都会存在DECLARE @Result bit =
(SELECT CASE WHEN EXISTS(SELECT * FROM MyTable WHERE [state] = 12 AND age > 110) THEN 1 ELSE 0 END)
答案 1 :(得分:0)
我不确定它对你有帮助,但你可以尝试测试:
例如,您可以确定结果集行数为100。 你可以使用前100名你的陈述。 如果原始结果行超过100,那么@@ ROWCOUNT将为真。
SELECT TOP 100 FROM MyTable WHERE [state] = 12 AND age > 110
IF @@ROWCOUNT=100
PRINT 'True'
ELSE
PRINT 'Flase'