c# - 我应该在执行 SQL 语句之前从中删除空格吗?

标签 c# .net 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");

此 sql 是问题的一个示例,甚至可能不正确。

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

最佳答案

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

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

优点如下:

  • 更好的可读性,没有困惑
  • 我可以轻松地将 SQL block 复制到 SQL 客户端工具或从中复制
  • 版本控制差异工具可以很容易地告诉我查询中发生了什么变化。

到目前为止没有缺点:)

更新

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

关于c# - 我应该在执行 SQL 语句之前从中删除空格吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9723233/

相关文章:

c# - Task.WaitAll 不等待任务完成

mysql - SQL如何统计上个月的新用户数?

mysql - 显示分组依据的所有行

c# - Sitecore 500 错误记录/警报

c# - 强制 HttpClient 信任单个证书

c# - 如何为图表控件的 x 轴提供自定义标签?

c# - 如何从多个类库中引用配置信息?

mysql - 选择开始列和结束列之间的行(Unix 时间戳)

C# 列出控件中的所有方法

c# - 系统.OutOfMemoryException。创建一个大矩阵