首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL Postgresql / PostGIS

问MySQL Postgresql / PostGIS
EN

Stack Overflow用户
提问于 2012-03-14 04:12:18
回答 2查看 2.5K关注 0票数 11

我在一个四亿行分区mysql表中有lat/lon坐标。该表增长@ 2000记录一分钟,旧数据每隔几周就会刷新一次。我正在探索如何对这些数据进行空间分析。

大多数分析都需要找出一个点是在一个特定的lat/lon多边形中,还是哪一个多边形包含这个点。

我认为处理多边形问题的方法如下:

  1. 创建一个mysql函数,它接受点和几何学,并返回布尔值。简单但不确定几何如何可以用来执行操作的lat/lon协调,因为几何假设的平坦表面,而不是球。
  2. 创建一个mysql函数,该函数获取自定义数据结构的点和标识符,并返回布尔值。多边形顶点可以存储在一个表中,一个函数可以用球面数学计算PIP。大量的多边形点可能会导致大量的表查询和慢速查询,
  3. 将点数据保留在mysql中,并将多边形数据存储在PostGIS中,并使用应用服务器将PostGIS中的点作为检验点(从MySQL到Postgresql/PostGIS的应用程序)来运行PIP查询。这将需要在重写查询和过程方面付出很大的努力。我仍然可以这样做,但Postgresql在处理4亿行方面有多好。在google上快速搜索“MySQL10亿行”会返回许多结果。对Postgres的相同查询不返回相关结果。

想听听一些想法和建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-19 13:29:01

一些想法。

首先,PostgreSQL和MySQL在性能调优方面完全不同。因此,如果您选择移植路线,请准备重新考虑您的索引策略。PostgreSQL不仅比MySQL具有更灵活的索引,而且表方法也有很大的不同,这意味着适当的索引策略和策略一样不同。不幸的是,这意味着你可以期望有一点挣扎。如果我能给出建议的话,我建议先删除所有的非关键索引,然后根据需要少加它们。

第二点是,这里没有人能在这一点上给你大量的实际建议,因为我们不知道你的程序的内部结构。在PostgreSQL中,最好只索引所需的内容,但是可以索引函数的输出(在这种情况下确实很有用),而且只能索引表的一部分。

我更像是PostgreSQL,而不是MySQL,所以我当然认为你应该和PostgreSQL一起去。然而,与其告诉你为什么等,让你在这个比例上挣扎,我会告诉你一些我想要使用的东西,如果我试图这样做的话。

为相关analysis

  • PostGIS编写自己的索引函数的
  • Functional
  • 是非常惊人的,非常灵活的

。

最后,在这个卷上切换db将是一个学习曲线,您需要为此做好准备。但是,PostgreSQL可以很好地处理卷。

票数 4
EN

Stack Overflow用户

发布于 2012-03-22 10:31:48

这里的行数与此完全无关。问题是,在多边形功中,有多少点可以由索引来完成。

答案取决于多边形有多大。

PostGIS非常快速地找到多边形边框中的所有点。然后,它需要更多的努力来找出点是否实际上在多边形内。

如果你的多边形是小的(小的边框),查询将是有效的。如果你的多边形很大或有一个形状,使包围框很大,那么它的效率就会降低。

如果你的多边形或多或少是静态的,那么周围就有工作。你可以把你的多边形划分成较小的多边形,然后重新创建id蕾丝。那么这个指数就会更有效率。

如果您的多边形实际上是多多边形,则第一步是使用ST_Dump将多多边形拆分为多边形,并在结果上重新创建和构建索引。

HTH

尼可拉斯

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9695821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档