在SQL Server存储过程中搜索表中指定列值的有效方法是什么?
我有一个用于“搜索”表的存储过程。在SQL Server存储过程中搜索表中指定列值的有效方法是什么?,sql,sql-server,tsql,stored-procedures,Sql,Sql Server,Tsql,Stored Procedures,我有一个用于“搜索”表的存储过程。 我希望与指定的字段完全匹配 我想知道我可以用什么方法有效地实现这个功能 这是我最初尝试的一个例子。我创建了一个复合WHERE子句: CREATE PROCEDURE usp_TableA_Search @ColumnA int = null, @ColumnB uniqueidentifier = null AS SELECT * FROM TableA WHERE (@ColumnA IS NULL O
我希望与指定的字段完全匹配 我想知道我可以用什么方法有效地实现这个功能 这是我最初尝试的一个例子。我创建了一个复合
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将创建一个执行计划,当存在这样的可变路径时,它可能无法正常工作
是否有更好的方法来构建此存储过程?
另外,我可以使用哪些资源来确定我的SQL代码的效率?动态SQL可以很好地解决类似的问题,只要您做得正确
SQLDenis对此写了一篇好文章。本文还提到了另一篇我觉得有用的文章: