相关疑难解决方法(0)

连接是否在运行时优化为 where 子句?

当我写这样的查询时......

select *
from table1 t1
join table2 t2
on t1.id = t2.id
Run Code Online (Sandbox Code Playgroud)

SQL 优化器,不确定这是否是正确的术语,是否将其转换为...

select *
from table1 t1, table2 t2
where t1.id = t2.id
Run Code Online (Sandbox Code Playgroud)

本质上,SQL Server 中的 Join 语句只是一种更简单的编写 sql 的方法吗?或者它实际上是在运行时使用的?

编辑:我几乎总是,而且几乎总是,使用 Join 语法。我只是好奇会发生什么。

join sql-server optimization t-sql

15
推荐指数
2
解决办法
1928
查看次数

连接语法/样式性能考虑

我们最近在我们的一个存储过程中发现,通过从这里更改查询的连接语法/样式,我们获得了显着的性能改进......

SELECT b.bla, c.foo, d.bar
FROM dbo.TableB b
JOIN dbo.TableC c
    JOIN dbo.TableD d  -- <-- Nested join syntax
    ON d.yyy = c.yyy
ON c.xxx = b.xxx
Run Code Online (Sandbox Code Playgroud)

对此...

SELECT b.bla, c.foo, d.bar
FROM dbo.TableB b
JOIN dbo.TableC c
ON c.xxx = b.xxx
JOIN dbo.TableD d   -- <-- Regular way
ON d.yyy = c.yyy
Run Code Online (Sandbox Code Playgroud)

注意:在实际查询中,有 10 个连接表,包括内连接和外连接。就sql数据而言,这些表并不大。没有聚合。输出中有一个 DISTINCT。所有连接都指向一个主键,但外键不一定被索引。

我们肯定会改变我们的方式,但我仍然很好奇关于这种风格的正确“指导”。我经常使用“缩进”样式来表示诸如查找表之类的“更具可读性”的连接。

sql-server sql-server-2012

5
推荐指数
1
解决办法
555
查看次数

标签 统计

sql-server ×2

join ×1

optimization ×1

sql-server-2012 ×1

t-sql ×1