哪个更好,隐式或显式加入?

时间:2011-07-31 18:26:57

标签: mysql

  

可能重复:
  SQL JOIN: is there a difference between USING, ON or WHERE?

哪个更好:

SELECT `sheet_data`.* 
FROM  `clip`, `sheet_data` 
WHERE `clip`.`mrecord`='8' AND `clip`.`data`=`sheet_data`.`id`

SELECT `sheet_data`.* 
FROM  `clip` INNER JOIN `sheet_data` 
  ON  `clip`.`data`=`sheet_data`.`id`
WHERE `clip`.`mrecord`='8'

为什么?

3 个答案:

答案 0 :(得分:4)

在过去的日子里,第一次更快,但这不再适用。我个人认为INNER JOIN更好,因为它更具可读性。它表明了表格之间的关系。您在连接中获得了这些关系,并在WHERE子句中进行过滤。这种分离使查询更具可读性。但这是个人品味的问题。

答案 1 :(得分:1)

没有。 2对于可读性更好,正如您可以通过查看要加入哪些列的ON子句并且不必扫描整个where子句所看到的那样。但从性能角度来看,两个查询都会产生具有相同性能的相同执行计划。

答案 2 :(得分:0)

一般来说,做一个显式连接(第二个)总是更好,因为它更便携。并非所有SQL服务器都实现了隐式连接,而且更容易一目了然地发现了什么。