В моем проекте хранимые процедуры поиска выглядят следующим образом
create proc CommentGet
(
@Type int,
@ParentID int
)
as
begin
select * from CommentTable where (@Type is null or CommentTable.Type=@Type) and (@ParentID is null or CommentTable.ParentID=@ParentID)
end
В этом случае я ввел Type и ParentID как некластерный индекс для CommentTable. Когда я запускаю код, я вижу план выполнения с использованием сканирования индекса вместо поиска индекса для получения результата, который заставляет SQL читать целые страницы. И, видимо, я не могу использовать преимущества некластерной индексации.
Как я выяснил до сих пор, если переменная используется в поисковом термине, эта проблема возникает, и если прямое количество подсказок where не используется, проблема не возникает и работает правильно (index Seek ).
Посоветуйте, пожалуйста, как использовать преимущества некластерного индекса для его обработки
Здесь плоскость исключения в качестве примера, поскольку вы видите записанное сканирование индекса вместо индекса Seek