У меня есть хранимая процедура, которая используется для «поиска» в таблице.
Я хочу точное соответствие для указанных полей.
Я хотел бы знать, каким образом я могу эффективно реализовать эту функцию!
Вот пример моей первоначальной попытки. Я создал составное предложение 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?