我有一个过程需要知道表上各种条件是否完全匹配1个。我可以通过简单的查询获得计数,但是我希望可以优化它,因为我不在乎是否有2个匹配项或2000个匹配项。一旦我知道有多个查询,查询就会停止。
“ TOP 2”不适用于“ COUNT”,因为无论计数多少,它仅返回1个结果。我在查询的表上没有任何索引(也无法对其进行控制),因此我不希望使用循环和游标能够获得更好的结果。子查询也将至少执行1个完整查询。我有没有其他选择?我应该研究自定义聚合函数吗?
--Just a generic example. Only interested in knowing if @NumPerson = 1
DECLARE @NumPerson int
SELECT @NumPerson = COUNT(id) FROM Person
WHERE vchLastName = <Last Name,varchar,>
AND vchFirstName = <First Name,varchar,>
我期望不会有太大的收获,但是我们正在使用足够多的查询以确保已拨入该查询。
答案 0 :(得分:0)
这将起作用-不确定窗口函数的性能:
; cte为(
选择COUNT(id)以上(按ID划分ID顺序)作为cnt,id
从人
)从cte中选择*,其中cnt = 1