1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > mysql存储过程参数可选 如何在T-SQL存储过程中使用可选参数?

mysql存储过程参数可选 如何在T-SQL存储过程中使用可选参数?

时间:2023-02-08 02:40:25

相关推荐

mysql存储过程参数可选 如何在T-SQL存储过程中使用可选参数?

“KM”的答案就其本身而言是好的,但未能完全贯彻他早期的一条建议;.忽略紧凑型代码,忽略对重复代码的担忧.

如果您希望获得最佳的性能,那么您应该为每个可选条件的组合编写一个定制查询。这听起来可能很极端,如果你有很多可选的标准,那么它可能是,但性能往往是努力和结果之间的权衡。在实践中,可能有一组通用的参数组合,这些组合可以通过定制查询进行目标,然后是针对所有其他组合的通用查询(与其他答案一样)。CREATEPROCEDUREspDoSearch@FirstNamevarchar(25)=null,

@LastNamevarchar(25)=null,

@Titlevarchar(25)=nullASBEGIN

IF(@FirstNameISNOTNULLAND@LastNameISNULLAND@TitleISNULL)

--Searchbyfirstnameonly

SELECTID,FirstName,LastName,TitleFROMtblUsersWHERE

FirstName=@FirstNameELSEIF(@FirstNameISNULLAND@LastNameISNOTNULLAND@TitleISNULL)

--Searchbylastnameonly

SELECTID,FirstName,LastName,TitleFROMtblUsersWHERE

LastName=@LastNameELSEIF(@FirstNameISNULLAND@LastNameISNULLAND@TitleISNOTNULL)

--Searchbytitleonly

SELECTID,FirstName,LastName,TitleFROMtblUsersWHERE

Title=@TitleELSEIF(@FirstNameISNOTNULLAND@LastNameISNOTNULLAND@TitleISNULL)

--Searchbyfirstandlastname

SELECTID,FirstName,LastName,TitleFROMtblUsersWHERE

FirstName=@FirstNameANDLastName=@LastNameELSE

--Searchbyanyothercombination

SELECTID,FirstName,LastName,TitleFROMtblUsersWHERE

(@FirstNameISNULLOR(FirstName=@FirstName))

AND(@LastNameISNULLOR(LastName=@LastName))

AND(@TitleISNULLOR(Title=@Title))END

这种方法的优点是,在定制查询处理的常见情况下,查询是尽可能高效的-不受未提供的标准的影响。此外,索引和其他性能增强可以针对特定的定制查询,而不是试图满足所有可能的情况。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。