忽略版本,格式化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.
编辑:请注意代码在一行中以大写字母表示,以便在此问题中更具可比性。
答案 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
我认为一致性是关键,我更喜欢你的同事对可读性的看法。