У меня есть процесс, который должен знать, есть ли ровно 1 совпадение с различными критериями в таблице. Я могу получить счет с помощью простого запроса, но я ожидаю, что смогу оптимизировать его, так как мне все равно, есть ли 2 совпадения или 2000 совпадений. Как только я узнаю, что у меня больше 1, запрос может остановиться.
«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,>
Я не ожидаю значительного увеличения, но мы используем запрос достаточно, я хочу убедиться, что он набран.