基本上,我有一个经常查询postgres数据库的程序,在某些情况下,它需要从一个单独的表中获得额外的信息。我可以从一开始就从一个内部连接获得所有的信息,但是大多数时候连接信息是不需要的。
我估计最多有1/10的时间需要连接信息,那么哪个性能更好呢? 10 + 1 = 11 regular queries
或者 10 queries with JOIN
10是一个保守的猜测,在需要连接信息之前可能需要100多个查询。与包含join子句的查询相比,查询的开销有多大?
基本上,我有一个经常查询postgres数据库的程序,在某些情况下,它需要从一个单独的表中获得额外的信息。我可以从一开始就从一个内部连接获得所有的信息,但是大多数时候连接信息是不需要的。
我估计最多有1/10的时间需要连接信息,那么哪个性能更好呢? 10 + 1 = 11 regular queries
或者 10 queries with JOIN
10是一个保守的猜测,在需要连接信息之前可能需要100多个查询。与包含join子句的查询相比,查询的开销有多大?
1条答案
按热度按时间r1zhe5dt1#
大多数连接并不昂贵。另一方面,每个查询都需要时间,因为为了检索数据,程序必须与数据库进行对话(即告诉它要发出什么查询,被告知要得到多少列和哪种数据类型,等等)。
使用连接加载数据可以使程序更具响应性。比方说,用户滚动主要数据列表,在某些行上必须检索详细数据。如果必须在滚动的时候从数据库中获取这些数据,那就太可怕了。
另一方面,如果用户滚动浏览一个主要数据列表,如果他们想查看详细数据,他们必须按下一个按钮,那么需要等待一段时间。在那种情况下,你可以从数据库里得到它。
所以,答案是:视情况而定。这两种方法都是有效的。选择一个看起来更适合你的。