Sql server 2005 sqlserver2005中动态SQL查询的编写
如果传递的参数值可能为空,那么为sql server 2005编写动态参数化查询的最佳方法是什么?利用:利用:这样做怎么样Sql server 2005 sqlserver2005中动态SQL查询的编写,sql-server-2005,tsql,dynamic-sql,Sql Server 2005,Tsql,Dynamic Sql,如果传递的参数值可能为空,那么为sql server 2005编写动态参数化查询的最佳方法是什么?利用:利用:这样做怎么样 DECLARE @Table TABLE( val1 VARCHAR(20), val2 VARCHAR(20) ) DECLARE @Param VARCHAR(20) INSERT INTO @Table SELECT '1','2' SELECT * FROM @Table WHERE (@Param IS NULL O
DECLARE @Table TABLE(
val1 VARCHAR(20),
val2 VARCHAR(20)
)
DECLARE @Param VARCHAR(20)
INSERT INTO @Table SELECT '1','2'
SELECT *
FROM @Table
WHERE (@Param IS NULL OR val1 = @Param)
但是,这会降低性能我建议您在构建动态查询时,如果不需要where子句,请不要将参数添加到where子句。类似的内容如何
DECLARE @Table TABLE(
val1 VARCHAR(20),
val2 VARCHAR(20)
)
DECLARE @Param VARCHAR(20)
INSERT INTO @Table SELECT '1','2'
SELECT *
FROM @Table
WHERE (@Param IS NULL OR val1 = @Param)
但是,这会降低性能我建议您在构建动态查询时,如果不需要where子句,请不要将参数添加到where子句。仅在可能的情况下:编写包含所有参数的查询,但不要编写常规的
WHERE
field1=@param1
and field2=@param2
.....
写
或
<>但如果出现严重的性能问题,请考虑为每个单独的案例编写查询。
只有当此查询每秒在小表上执行多次时,才有理由将其完全写入,请使用sp_prepare/sp_execute,以便在这种情况下运行得最快。仅在可能的情况下:编写包含所有参数的查询,但不要编写常规的
WHERE
field1=@param1
and field2=@param2
.....
写
或
<>但如果出现严重的性能问题,请考虑为每个单独的案例编写查询。
只有当此查询每秒在小表上执行多次时,才有理由完全写入它,请使用sp_prepare/sp_execute,因此,在这种情况下,它将运行得最快。我的不是存储过程,而是一个参数化的查询,用于链接并查看DOUCMENT,其全部内容都是关于排除动态参数化QUERY@abatishchev-好的,实际上我的上限在那个时间,我的不是存储过程,这是一个参数化的查询,用来链接和查看DOUCMENT,这都是关于离开的动态参数化QUERY@abatishchev-好的,实际上我的caps在那个时间段。首先让我知道你如何格式化以注释形式编写的代码,这样我就可以以格式化的形式向你发送我的代码。这个网站上运行一个JS,可以自动格式化它。在写问题或答案时,只需在每行前面加上至少4个空格(不适用于评论)。或者你也可以在这个网站上使用所见即所得编辑器的工具面板。我手动添加的空间/选项卡,因为该站点不管理这些空间/选项卡。我还可以做些什么来保持性能我想知道一些代码,就像您在上面所做的那样,请让我知道?这取决于具体情况。这是一个太宽泛的问题。你可以尝试在这里搜索答案,或者问自己一个关于性能的问题。但是要更好地了解它,唯一的方法是学习,搜索互联网,或者聘请顾问或老师。首先让我知道你如何格式化以注释形式编写的代码,以便我可以将我的代码以格式化的形式发送给你。这个网站上运行着一个JS,可以自动格式化它。在写问题或答案时,只需在每行前面加上至少4个空格(不适用于评论)。或者你也可以在这个网站上使用所见即所得编辑器的工具面板。我手动添加的空间/选项卡,因为该站点不管理这些空间/选项卡。我还可以做些什么来保持性能我想知道一些代码,就像您在上面所做的那样,请让我知道?这取决于具体情况。这是一个太宽泛的问题。你可以尝试在这里搜索答案,或者问自己一个关于性能的问题。但要更好地了解这一点,唯一的办法是学习、搜索互联网或聘请顾问或教师。