【问题标题】:Postgresql compound index for spatial + time parameters空间 + 时间参数的 Postgresql 复合索引
【发布时间】:2011-08-09 03:17:07
【问题描述】:

我们有一个表,其中包含数百万行包含 PostGIS 几何图形。我们要执行的查询是:属于边界几何的最新条目是什么?这个查询的问题是我们经常会有大量的项目与边界框(半径大约 5 公里)匹配,然后 Postgres 将不得不重新检查边界框内的所有返回项目以获得他们的时间戳,然后排序并返回最新的N。

感觉我们需要的是一个(复合?)索引,它同时考虑了 GIST 空间索引和时间戳。这样的事情可能吗?我在 CREATE INDEX 步骤中尝试了几种组合,但到目前为止没有任何效果。

【问题讨论】:

  • 这个公认的答案对你有用吗?看起来时间戳的第二个索引没有帮助。

标签: postgresql indexing postgis


【解决方案1】:

我宁愿创建两个索引,一个是空间索引,另一个是时间戳列。 PostgreSQL 可以很好地组合索引,它不需要“重新检查”找到的行。它可以使用索引来获取几何中的行并使用其他索引对它们进行排序。

【讨论】:

  • 如何知道索引是否正确组合使用?我不相信这个答案。
  • 使用解释(或解释分析)检查查询计划。如果您可以检查它,则没有什么是您应该相信的。
  • 谢谢!如果效果好,我会尝试并投票。当我说“我不相信”时,是因为如果我创建单独的索引,特别是与 geoindex 一起使用,MySQL 将无法正常工作。
  • 这是 Postgres,不是 MySQL。许多事情在这里的工作方式不同:) Postgres 可以毫无问题地组合许多不同的索引。
  • 在我的例子中,postgresql 不使用时间戳列上的第二个索引,而是进行磁盘排序。
猜你喜欢
  • 2012-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 2017-10-17
  • 2016-03-21
  • 1970-01-01
相关资源
最近更新 更多