SQL FORM多个表 - '左连接' vs','

时间:2015-01-04 17:47:43

标签: php mysql sql mysqli

什么更好?为什么?

功能a:

DELETE a FROM a LEFT JOIN b 
ON a.CHROM=b.CHROM AND a.POS=b.POS 

功能b:

DELETE a FROM a, b 
WHERE a.CHROM=b.CHROM AND a.POS=b.POS

1 个答案:

答案 0 :(得分:1)

最好加入FROM子句,因为它首先被执行。有些情况下你应该加入哪里但不是在这里。所以我会说功能a是你最好的选择。另外,我认为你不想在函数a中进行左连接,因为你将加入比你要删除的更多的记录。在函数a中使用INNER JOIN可能更好,更有效。一个好的做法是在删除或更新之前进行选择。如果你运行这些选择,你会得到相同的结果吗?您应该在第一个查询中获得更多结果,因为您使用左连接,第二个查询类似于内连接。

SELECT a FROM a LEFT JOIN b 
ON a.CHROM=b.CHROM AND a.POS=b.POS 

SELECT a FROM a, b 
WHERE a.CHROM=b.CHROM AND a.POS=b.POS

看看这个答案:

INNER JOIN ON vs WHERE clause

如果需要更好的连接解释,这对我很有帮助:

SQL JOIN and different types of JOINs