涉及 table 且不查询几何本身的查询是否比不查询几何的 table 需要更长的查询时间?
Do queries involving tables with geometry that don't query the geometry itself take longer to query than a table without geometry?
我在 geodjango 应用程序中有一个 postgis table,它包含大约 45,000 行多面几何类型。我想知道当查询中不涉及几何时,查询此 table 是否因几何的存在而减慢,或者换句话说,如果我将几何字段与一对一关系相关联这会提高性能吗?
视情况而定。
如果几何体足够大,可以在 TOAST table 中不按行存储,则主 table 几乎和没有几何列,并且很难测量速度差异。
如果几何较小,并且几何存储在主 table 中,查询 table 会稍微慢一些,因为整个 table 行都是从磁盘读取的并且你最终得到的 I/O 比你没有该列时多。
但是,如果您以一对一的关系将几何存储在另一个 table 中,检索几何将产生额外连接的开销,这将使该操作变慢。
我建议您保持简单并将几何存储在 table 中。很可能,您可以通过执行更复杂的操作获得的性能提升并不大,您的应用程序的整体性能甚至可能会受到影响。这听起来像是过早的微优化。如果你想这样做,运行 一个真实的性能测试和真实的测试数据来验证它是值得的。
我在 geodjango 应用程序中有一个 postgis table,它包含大约 45,000 行多面几何类型。我想知道当查询中不涉及几何时,查询此 table 是否因几何的存在而减慢,或者换句话说,如果我将几何字段与一对一关系相关联这会提高性能吗?
视情况而定。
如果几何体足够大,可以在 TOAST table 中不按行存储,则主 table 几乎和没有几何列,并且很难测量速度差异。
如果几何较小,并且几何存储在主 table 中,查询 table 会稍微慢一些,因为整个 table 行都是从磁盘读取的并且你最终得到的 I/O 比你没有该列时多。
但是,如果您以一对一的关系将几何存储在另一个 table 中,检索几何将产生额外连接的开销,这将使该操作变慢。
我建议您保持简单并将几何存储在 table 中。很可能,您可以通过执行更复杂的操作获得的性能提升并不大,您的应用程序的整体性能甚至可能会受到影响。这听起来像是过早的微优化。如果你想这样做,运行 一个真实的性能测试和真实的测试数据来验证它是值得的。