对于开发者来说,当使用加入的,而不是子查询或者是他们相同的拇指有规则。

有帮助吗?

解决方案

取决于RDBMS。你应该比较两个查询执行计划。

在我与Oracle 10和11的经验,执行计划都是一样的。

其他提示

第一个原则是“国家查询准确”。第二个原则是“状态的查询简单,显然是”(这是你平时做选择)。第三个是“状态查询,以便它会有效地处理”。

如果其具有良好的查询处理器一个DBMS,等效查询设计应该应该导致查询计划是相同的(或至少同样有效)。

我最大的在使用MySQL的第一次挫折是如何意识到我必须预见到优化。与Oracle,SQL服务器,Informix和其他DBMS产品的长期经验后,我很少用料等问题关心自己。现在最好的MySQL的新版本,但它仍然是我最终需要注意的频率高于其他人。

性能明智的,他们没有在最现代的DB引擎有什么区别。

与子查询问题是,你可能最终具有亚结果集而没有任何关键,所以将它们连接会比较昂贵。

如果可能的话,总是试图代替使连接查询,并与第滤镜上,(尽管它应该是一样的,现代的引擎是这个优化)。

理论上每个子查询可以被改变为连接查询。

如同许多事情,这取决于。 - 多么复杂的子查询 - 在查询中的子查询执行的频率

我尽量避免子查询时,我可以。期待大的结果集特别是当从未使用子查询 - 在情况下,子查询的结果集的每一个项目执行

照顾, 亚历

让我们暂时忽略对性能的影响(因为我们应该如果我们都知道,“过早的优化是所有罪恶的根源”)。

选择看起来更清晰,更易于维护。

在SQL Server的一个相关子查询通常执行比加入或,通常甚至获得更好的性能更差,一个连接到一个派生表。我几乎从来不写一个子查询任何将要被执行多次。这是因为相关子查询经常基本上把你的查询到一个光标,一次运行一行。在数据库中通常最好做的事情在基于组的方式来

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top