我习惯于使用 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/