使用一个复杂的查询或几个更简单的查询是否更好?

Ank*_*jee 2 database

哪个选项更好:

  1. 编写具有大量连接的非常复杂的查询,或
  2. 一个接一个地编写2个查询,将获得的处理查询的结果集应用于其他查询.

Jon*_*ler 5

通常,一个查询优于两个,因为优化器有更多信息可以使用,并且可能能够产生比单独使用更高效的查询计划.此外,使用两个(或更多)查询通常意味着您将多次运行第二个查询,并且DBMS可能必须重复生成查询的查询计划(但如果您准备语句并将参数作为占位符传递则不会当(重新)执行查询时.这意味着程序和DBMS之间的来回交换更少.如果您的DBMS位于世界(或国家)另一端的服务器上,这可能是一个重要因素.

反对组合这两个查询,最终可能会在DBMS和应用程序之间传递大量重复数据.如果表T1中的10,000行中的每一行与表T2中的平均30行连接(因此总共返回300,000行),那么您可能会将大量数据重复发送回客户端.如果T1的(相关投影)的行大小相对较小并且来自T2的数据相对较大,则这无关紧要.如果来自T1的数据很大且来自T2的数据很小,那么这可能很重要; 决定前的措施.