样式/格式对SQL的影响

时间:2010-07-27 10:07:04

标签: sql coding-style

忽略版本,格式化SQL代码的最佳做法是什么?

我更喜欢这种方式(方法A):

select col from a inner join b on a.id = b.id inner join c on b.id = c.id

同事更喜欢另一个(方法B):

select col from a inner join (b inner join c on b.id=c.id) on a.id = b.id

我想知道是否存在任何差异 - 查询优化器似乎为两者生成相同的执行计划。那也许只是可读性?

这是我第一次看到使用方法B编写的SQL,有没有其他人像这样编写SQL?我个人觉得很难读出方法B.

编辑:请注意代码在一行中以大写字母表示,以便在此问题中更具可比性。

3 个答案:

答案 0 :(得分:1)

方法B是类似于子选择的语法,但它的解析方法与方法A相同。使用它没有任何害处。我个人也喜欢方法A,因为它可以以线性方式阅读。

答案 1 :(得分:1)

我认为A更具可读性,大多数示例代码都使用该样式。两者解析相同并产生相同的查询计划,因此就SQL Server而言,没有区别。

我通常也会使用大写关键字和缩进以便于阅读:

SELECT col 
FROM a 
  INNER JOIN b 
    ON a.id = b.id  
  INNER JOIN c 
    ON b.id = c.id

答案 2 :(得分:1)

我个人的偏好是

SELECT col1, col2, col3, 
       col4, col5
FROM a
  INNER JOIN b ON a.id = b.id  
  INNER JOIN c ON b.id = c.id
WHERE a.col1 = 1 

我认为一致性是关键,我更喜欢你的同事对可读性的看法。