相关疑难解决方法(0)

ON 与 WHERE 上的索引性能

我有两张桌子

@T1 TABLE
(
    Id INT,
    Date DATETIME
)

@T2 TABLE
(
    Id INT,
    Date DATETIME
)
Run Code Online (Sandbox Code Playgroud)

这些表在 (Id, Date) 上有一个非聚集索引

我加入这些表

SELECT *
FROM T1 AS t1
INNER JOIN T2 AS t2
ON 
    t1.Id = t2.Id
WHERE 
    t1.Date <= GETDATE()
    AND
    t2.Date <= GETDATE()
Run Code Online (Sandbox Code Playgroud)

这也可以写成

SELECT *
FROM T1 AS t1
INNER JOIN T2 AS t2
ON 
    t1.Id = t2.Id
    AND
    t1.Date <= GETDATE()
    AND
    t2.Date <= GETDATE()
Run Code Online (Sandbox Code Playgroud)

我的问题是,这两个查询中哪一个提供了更好的性能,为什么?或者他们是平等的?

index join sql-server t-sql table

26
推荐指数
3
解决办法
3150
查看次数

MS SQL 中的 SQL JOIN 语法

我在 MSSQL 课上教过,这是如何连接两个表

select * from FirstTable A
JOIN SecondTable B
on A.ID= B.ID
Run Code Online (Sandbox Code Playgroud)

现在在我的职业生涯中,我遇到过这样的 JOIN 查询

select * from FirstTable A, SecondTable B
where A.ID=B.ID
Run Code Online (Sandbox Code Playgroud)

我知道第二种选择曾经是常态,但现在可能已经放弃了。

我发现在我加入 6+ 个表 + 有多个子查询的复杂查询中,第二种形式更容易理解,而且简短漂亮。

问题

  • 我应该使用哪一种?
  • 一个比另一个有优势吗?

sql-server-2008 join

4
推荐指数
2
解决办法
676
查看次数

标签 统计

join ×2

index ×1

sql-server ×1

sql-server-2008 ×1

t-sql ×1

table ×1