我习惯于使用stringbuilder来构建要执行的Sql语句,因为这使我可以在代码中保持该语句的格式和可读性。但是,它可能产生带有许多额外空白的无效语句:
sb.AppendLine (@"SELECT DISTINCT *");
sb.AppendLine (@" FROM ( SELECT col1");
sb.AppendLine (@" , col2");
sb.AppendLine (@" , col3 ");
sb.AppendLine (@" , col4");
sb.AppendLine (@" FROM (SELECT *");
sb.AppendLine (@" FROM TABLE )";
sb.AppendLine (@" WHERE col5= col1 ");
sb.AppendLine (@" AND col6 = col2 ");
sb.AppendLine (@" GROUP BY col1");
sb.AppendLine (@" , col2");
sb.AppendLine (@" ORDER BY col3");
此sql是问题的一个示例,甚至可能不正确。
我应该在将其传递给要执行的命令对象之前从中剥离空格吗?还是命令本身会执行此操作,或者这只是一个微不足道的优化,不值得考虑?
最佳答案
这就是我在代码中声明SQL查询的方式:
string query = @"
select columns
from table
where condition = 1
";
这里是优点:
更好的可读性,没有混乱
我可以轻松地将SQL块复制到SQL客户端工具/从SQL客户端工具复制SQL块
版本控制差异工具将轻松地向我显示仅在查询中发生了什么变化。
到目前为止没有缺点:)
更新资料
哦,是的,我认为担心多余的空格会导致过度优化。