我有一个用于“搜索”表的存储过程。
我想要指定字段的精确匹配。
我想知道如何有效地实现此功能!
这是我最初尝试的一个例子。我创建了一个复合 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写得很好blog post关于这个。
关于sql - 在 SQL Server 存储过程中搜索表中指定列值的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6915578/