在执行SQL语句之前,我是否应该修剪它们的空白

本文关键字:修剪 空白 是否 SQL 执行 语句 | 更新日期: 2023-09-27 18:27:50

我习惯于使用字符串生成器来构建要执行的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语句之前,我是否应该修剪它们的空白

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

string query = @"
    select columns
    from table
    where condition = 1
";

以下是专业人士:

  • 可读性更好,没有杂乱
  • 我可以很容易地将SQL块复制到SQL客户端工具中
  • 版本控制diff工具将很容易地只向我显示查询中发生了什么变化

到目前为止没有缺点:)

更新

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

正如您已经说过的,我认为您过度优化了。你说的可能是100字节。你的结果集可能会比这个大。