涉及不查询几何本身的具有几何的表的查询是不是比没有几何的表需要更长的查询时间?

Posted

技术标签:

【中文标题】涉及不查询几何本身的具有几何的表的查询是不是比没有几何的表需要更长的查询时间?【英文标题】:Do queries involving tables with geometry that don't query the geometry itself take longer to query than a table without geometry?涉及不查询几何本身的具有几何的表的查询是否比没有几何的表需要更长的查询时间? 【发布时间】:2021-10-23 10:18:23 【问题描述】:

我在 geodjango 应用程序中有一个 postgis 表,其中包含大约 45,000 行具有多面几何类型的行。我想知道当查询不涉及几何时,查询此表是否会因几何的存在而减慢,或者换句话说,如果我将几何字段与一对一关系相关联,这会提高性能?

【问题讨论】:

【参考方案1】:

这取决于。

如果几何足够大,可以在TOAST 表中不合规地存储,则主表将几乎与没有几何列一样小,并且很难测量差异速度。

如果几何体较小,并且几何体存储在主表中,则查询表会稍微慢一些,因为整个表行都是从磁盘读取的,并且您最终会获得比不这样做时更多的 I/O'没有专栏。

但是,如果您将几何图形存储在另一个具有一对一关系的表中,则检索几何图形将产生额外连接的开销,这将使该操作变慢。

我建议您保持简单并将几何图形存储在表格中。很可能,您可以从执行更复杂的操作中获得的性能提升并不大,而且您的应用程序的整体性能甚至可能会受到影响。在我看来,这听起来像是过早的微优化。如果您想这样做,请使用真实的测试数据运行真实的性能测试,以验证它是否值得。

【讨论】:

以上是关于涉及不查询几何本身的具有几何的表的查询是不是比没有几何的表需要更长的查询时间?的主要内容,如果未能解决你的问题,请参考以下文章

具有几何返回类型的 Spring 数据存储库和本机查询

JDBC:获取 SQL 查询中涉及的表名

Collada 几何和动画文件加载

具有产品 ID 和该 ID 的多个值的表的 Sql 查询

提升几何/空间查询形状

MySQL中的GIS几何函数和空间分析函数