相关疑难解决方法(0)

JOIN比WHERE更快吗?

假设我有两个链接的表(一个具有另一个的外键):

CREATE TABLE Document (
  Id INT PRIMARY KEY,
  Name VARCHAR 255
)

CREATE TABLE DocumentStats (
  Id INT PRIMARY KEY,
  DocumentId INT, -- this is a foreign key to table Document
  NbViews INT
)
Run Code Online (Sandbox Code Playgroud)

我知道,这不是最聪明的做事方式,但这是我能想到的最好的例子.

现在,我想获得拥有超过500个视图的所有文档.我想到的两个解决方案是:

SELECT *
FROM Document, DocumentStats
WHERE DocumentStats.Id = Document.Id
  AND DocumentStats.NbViews > 500
Run Code Online (Sandbox Code Playgroud)

要么 :

SELECT *
FROM Document
INNER JOIN DocumentStats
ON Document.Id = DocumentStats.Id
WHERE DocumentStats.NbViews > 500
Run Code Online (Sandbox Code Playgroud)

两个查询都是等价的,还是有一种方法比另一种更好?如果是这样,为什么?

我知道我的例子并不完美,而且查询可能需要一些调整,但我希望你明白这一点;)!

编辑:根据答案中的要求,这个问题针对MSSQL,但我有兴趣知道它是否与其他数据库引擎不同(MySQL等...)

sql performance join where-clause

55
推荐指数
3
解决办法
5万
查看次数

SQL左连接中"on ..和"与"on .. where"之间的区别?

Sql语句.

1.select a.* from A a left join B b on a.id =b.id and a.id=2;

2.select a.* from A a left join B b on a.id =b.id where a.id=2;
Run Code Online (Sandbox Code Playgroud)

这两个sql语句有什么区别?

sql syntax join where

24
推荐指数
2
解决办法
7956
查看次数

标签 统计

join ×2

sql ×2

performance ×1

syntax ×1

where ×1

where-clause ×1