什么是更好的?为什么?

功能一:

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

最佳答案

最好加入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

09-25 18:25