【发布时间】:2015-02-05 16:07:21
【问题描述】:
由于不同的原因,SQL Server 似乎不可避免地需要使用动态 SQL,但生成的代码看起来很复杂且无法维护。 SQL Server Management Studio 的智能停止对文字内的查询起作用,总体而言,所有这些字符串操作的东西在 IMO 中都是一团糟。
您有哪些方法可以简化此操作并使 SQL 更易于维护?
(当然除了根本不直接使用 SQL 并且依赖 ORM,这在我目前的情况下不是一个选项)
编辑:在我当前的特殊情况下,我有一个带有多个过滤参数的 SP,这些参数在 where 子句中使用 like,当参数为 null 或空时,它不应该包含在 where子句,试图避免使用 (@param IS NULL) OR (column LIKE @param) 的动态 sql 会导致性能不佳。
【问题讨论】:
-
应用内的动态 SQL?还是动态 tsql(在存储过程中)?还是两者兼而有之?
-
(回复:“使用 SQL Server 似乎不可避免地需要使用动态 SQL” - 它可能看起来那样,但实际上你真的确定?如果动态 SQL 确实是解决你正在做的任何事情的唯一明智的解决方案,那么不,没有办法为这样的语句获得适当的 IntelliSense被拆分并分布在几个字符串文字上,这可能是乱序的。你必须忍受它。)
-
听起来您正在处理“包罗万象”的查询。 IMO 动态 tsql 是要走的路——它应该会带来更好的性能。 Here's a good article 解释了可选参数与动态 tsql 的多个谓词的优缺点。
标签: sql-server tsql dynamic-sql maintainability