вы говорите, что не применяете ограничение, что означает отсутствие уникального индекса (UserName, Application) или (Application, UserName). Может ли запрос использовать путь доступа, который ищет на UserName
или Application
? Другими словами, индексируется ли какой-либо из этих двух столбцов? Если да, то план выберет наиболее избирательный индекс, который будет проиндексирован, и выполнит сканирование диапазона, возможно, вложенный цикл с поиском закладок, если индекс не кластеризован, а затем фильтр. Топ 1 остановит запрос после сопоставления первого фильтра, но имеет ли это значение, зависит от количества данных (сколько записей найдет сканирование диапазона и сколько удовлетворяет фильтр).
Если индекс отсутствует, он будет выполнять полное кластерное сканирование, несмотря ни на что. Топ 1 остановит сканирование при первом совпадении, будь то после обработки 1 записи или после обработки 999 мил. записи зависят от фактического имени пользователя и приложения ...
Единственное, что даст реальное различие, - это то, что запрос может выполнить поиск обоих значений, т.е. иметь индекс покрытия. Ограничение будет применяться именно через такой покрывающий индекс. Другими словами: отключив ограничение, предположительно для производительности записи, будьте готовы заплатить цену при чтениях. Это важно читать? Делали ли вы какие-либо измерения, чтобы подтвердить, что дополнительная индексная запись ограничения будет серьезно снижать производительность?