在性能方面哪些更好?
只有一种方法可以知道:时间.
通常,我认为单个连接使数据库能够进行大量优化,因为它可以看到它需要扫描的所有表,减少了开销,并且可以在本地构建结果集.
最近,我有大约100个select语句,我在代码中将其更改为JOIN.通过几个索引,我可以从1分钟的运行时间到大约0.6秒.
单个连接通常优于多个单个选择.但是,有太多不同的案例适合您的问题.在一个简单的规则下将它们混为一谈是不明智的.
更重要的是,如果您和下一个程序员在使用SQL时"说同一种语言",单个连接通常会更容易让下一个程序员理解和修改.我在谈论元组集的语言.
同样重要的是,数据库物理设计和查询设计需要首先关注的问题将导致十分之一的速度改进,而不是10%的速度改进.如果你做了数以千计的简单选择而不是单个连接,那么你可能会获得十分之一的优势.如果您正在进行三到四次简单选择,那么您将不会以某种方式看到任何重大改进.
不要尝试将自己的连接循环编写为一堆选择.您的数据库服务器有许多用于连接的聪明算法.此外,您的数据库服务器可以使用统计信息和估计的访问成本来动态选择连接算法.
数据库服务器的连接算法通常比你编写的任何东西都要好.他们更了解物理I/O,缓存和什么不是.
这使您可以专注于您的问题域.
除了已经说过之外,要考虑的一件事是,选择将通过网络返回比连接可能更多的数据.如果网络连接已经成为瓶颈,这可能会使情况变得更糟,特别是如果经常这样做的话.也就是说,在任何性能情况下,最好的选择是测试,测试和测试.
这完全取决于数据库如何优化连接以及索引的使用.
我有一个缓慢而复杂的查询,有很多连接.然后我将其细分为2或3个不太复杂的查询.性能提升令人惊讶.
但最终,"它取决于",你必须知道瓶颈在哪里.