2个查询之间的性能比较

时间:2017-01-31 14:31:15

标签: sql

我有2个表A,B,其中ID字段是公共密钥。 如果我使用下面提到的任何一个查询,结果将是相同的。

select * from A,B where A.ID=B.ID and A.Id = 10;
select * from A inner join B on A.ID=B.ID where A.Id = 10;

任何人都可以告诉我哪个查询在性能方面会更好,为什么会这样?

1 个答案:

答案 0 :(得分:2)

它们应该大致相同。但是,第一个查询是SQL反模式,不应该使用它。隐式连接通常会导致问题,因为随着它们变得越来越复杂,您会发现where子句经常被意外地省略,而这在大多数数据库中都不会使用显式连接语法进行语法检查。如果遗漏了某个意外的子句会导致交叉连接,那么结果就不正确了。

此外,如果您需要将一个连接更改为左连接并使用显式连接(尤其是在不再允许隐式左连接语法且始终存在错误的SQL服务器中),则可能会在以后的维护中出现不一致的结果永远不应该使用)并最终混合连接(当您有多个连接时,这是大多数查询常见的)。

此外,如果你真的想要一个交叉连接,那么稍后进行维护的人不太可能知道它,并认为你的代码是错误的,需要内部连接。使用显式连接时,意图是明确的。