我应该在执行它们之前从SQL语句中修剪空格吗?

Sam*_*der 1 .net c# sql

我习惯使用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");
Run Code Online (Sandbox Code Playgroud)

这个SQL是问题的一个例子,甚至可能都不正确.

在将空格传递给要执行的命令对象之前,是否应该从中删除空格?或者命令会自己执行此操作,还是仅仅是一个不值得思考的微优化?

Adr*_*iro 8

这是我在代码中声明我的SQL查询的方式:

string query = @"
    select columns
    from table
    where condition = 1
";
Run Code Online (Sandbox Code Playgroud)

以下是优点:

  • 方式更好的可读性,没有杂乱
  • 我可以轻松地将SQL块复制到SQL客户端工具中
  • 版本控制差异工具将轻松显示查询中的更改内容.

到目前为止没有缺点:)

更新

哦,是的,我认为担心额外的空白是过度优化.

  • @SamHolder我打赌使用StringBuilder追加字符串比这慢. (3认同)