当我只需要知道是否大于1时,如何优化获取结果计数?

时间:2019-07-03 17:24:05

标签: tsql count query-optimization

我有一个过程需要知道表上各种条件是否完全匹配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,>

我期望不会有太大的收获,但是我们正在使用足够多的查询以确保已拨入该查询。

1 个答案:

答案 0 :(得分:0)

这将起作用-不确定窗口函数的性能:

  

; cte为(

     

选择COUNT(id)以上(按ID划分ID顺序)作为cnt,id

     

从人

     

)从cte中选择*,其中cnt = 1