Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql join with join关键字与join with关键字有什么区别=_Sql_Sql Server 2008_Query Optimization - Fatal编程技术网

Sql join with join关键字与join with关键字有什么区别=

Sql join with join关键字与join with关键字有什么区别=,sql,sql-server-2008,query-optimization,Sql,Sql Server 2008,Query Optimization,可能重复: 使用=运算符进行查询:- Select us.FirstName ,uf.FileTitle ,pq.Question ,pa.Answer from UserMst us,UploadedFile uf,PollQuestion pq,PollAnswer pa,PollResult pr where us.UserId = pr.U_id and uf.FileId=pr.A_id and p

可能重复:

使用=运算符进行查询:-

 Select us.FirstName 
       ,uf.FileTitle 
       ,pq.Question
       ,pa.Answer from
 UserMst us,UploadedFile uf,PollQuestion pq,PollAnswer pa,PollResult pr
 where us.UserId = pr.U_id 
       and uf.FileId=pr.A_id 
       and pq.Q_id=pr.Q_id 
       and pa.A_id=pr.ans_id
使用Join关键字进行查询:-

  Select us.FirstName,uf.FileTitle ,pq.Question,pa.Answer  from 
  PollResult pr join UserMst us on us.UserId = pr.U_id  
           join UploadedFile uf on uf.FileId = pr.A_id 
           join PollQuestion pq on pq.Q_id= pr.Q_id
           join PollAnswer pa on pa.A_id =pr.ans_id

哪一个在执行上更好?

在SQL 2008中,这几乎没有什么区别。(尽管我认为前一种方法可能会被弃用?)

然而,在许多SQL实现中,如果每个连接都有一个条件,那么后续的连接将使用更少的值进行连接,因此会稍微快一点

如果你把所有的条件都放在最后,那么这种优化直到最后才会发生。因此,您将得到一个庞大的行列表,这些行在一次过中被过滤,理论上,这将更慢

例如:

如果表A有1000行,而您用1000行连接到另一个表B,但指定int eh join条件,即您只连接到B中的10行,则您有10行。如果你接着加入表C,你将只加入10行

如果您将A到B连接到C,然后进行筛选,您将筛选1000行(或者可能是1000000行,具体取决于连接)


因此,出于跨实现兼容性和可读性的考虑,最好使用后一个版本。

我更喜欢连接,我认为习惯于总是将连接条件放在ON子句中最有意义(除非它是外部连接,并且您确实希望它放在where子句中)因为它使任何阅读您的查询的人都能更清楚地了解表的连接条件,并且有助于防止WHERE子句长达几十行。由于其干净

或隐式连接区域SQL反模式,请参见: