我们可以使用IN语句在多个查询中分解SQL连接

时间:2013-01-18 21:50:03

标签: php sql join orm

No.orm的创建者表示可以将3个表的连接分解为3个更快的查询:http://www.notorm.com/#performance

您是否认为可以通过将ID放在IN语句中来避免连接并使用多个查询?

由于上述原因,该库(NoORM)不支持加入,您认为我可以放弃使用连接并只使用该库吗?我觉得很难避免加入。

2 个答案:

答案 0 :(得分:2)

对于相对小规模的应用,这是可行的。但是在你可能传递许多参数的情况下(相当于许多行上的连接条件匹配),这将使你失败。我能想到的最好的例子是Informix的限制,例如,(我不知道这是否适用于最新版本),其中准备好的语句不允许超过20(不完全)或所以要传递的论点。

答案 1 :(得分:1)

对单个查询使用联接的一个原因是,它允许数据库的优化程序根据现有数据为所涉及的表提供最佳计划。如果将连接的查询分解为单个查询,则实际上是对执行计划进行硬编码。除此之外,假设您在编写代码时花费一些时间考虑查询的选择性,并且在应用程序的生命周期内选择性将保持不变。在我看来,这些都是相当大的假设。

此外,如果您使用的数据库不仅仅是一个愚蠢的容器,您可能会发现有些查询不会轻易分解为单个查询(例如,几乎任何时候使用聚合函数)