Как эффективный способ поиска в таблице указанных значений столбцов в хранимой процедуре SQL Server? - PullRequest
2 голосов
/ 02 августа 2011

У меня есть хранимая процедура, которая используется для «поиска» в таблице.
Я хочу точное соответствие для указанных полей.

Я хотел бы знать, каким образом я могу эффективно реализовать эту функцию!

Вот пример моей первоначальной попытки. Я создал составное предложение WHERE:

CREATE PROCEDURE usp_TableA_Search
    @ColumnA int = null,
    @ColumnB uniqueidentifier = null
AS
    SELECT *
    FROM TableA
    WHERE
        (@ColumnA IS NULL OR @ColumnA = ColumnA)
        AND
        (@ColumnB IS NULL OR @ColumnB = ColumnB)

Этот метод кажется мне очень неэффективным. Я не уверен, что SQL будет неоднократно проверять @ColumnA и @ColumnB для NULL? И я слышал, что SQL создаст план выполнения, который может не сработать, если есть переменные пути, подобные этому.

Есть ли лучший способ построить этот sproc?

Кроме того, какие ресурсы я могу использовать для определения эффективности моего кода SQL?

1 Ответ

5 голосов
/ 02 августа 2011

Что-то вроде этого делается довольно хорошо с Dynamic SQL, если вы все делаете правильно.

SQLDenis написал хороший пост в блоге об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...