Geolocation 基于几何列的PostgreSQL表分区

Geolocation 基于几何列的PostgreSQL表分区,geolocation,geospatial,postgis,postgresql-9.1,Geolocation,Geospatial,Postgis,Postgresql 9.1,以下是带有几何体字段的表格: Table "public.regions" Column | Type | -----------+-----------------------+- id | integer | parent_id | integer | level | integer | name

以下是带有几何体字段的表格:

         Table "public.regions"
  Column   |         Type          |
-----------+-----------------------+-
 id        | integer               | 
 parent_id | integer               |
 level     | integer               |
 name      | character varying(55) |
 location  | geometry              |
我已经存储了所有大陆、国家、州和城市的几何图形。由于它是一个巨大的表,我需要根据顶级位置(即大陆)对表进行分区,以提高性能

如何根据几何图形(大陆)划分现有表?创建名为“亚洲、欧洲、澳大利亚”的继承表是否足够好。。。并根据包含的查询在这些表中插入行?这会提高查询的性能吗

例如,我尝试运行如下查询:

11.562424 48.148679是慕尼黑的一点

解释分析从以下区域选择id、名称、级别: 包含((位置),(GeomFromText((点(11.562448.148679)))


在我的计算机上使用PG大约需要500毫秒,而在Oracle中使用相同的查询大约需要200毫秒。

您创建了索引吗?即使用gist(位置)在“public.regions”上创建索引区域\u location\u idx@MikeToews是的,我做了,这并没有使它快很多…我不确定几何体分区对性能有多大帮助…如果索引正确,边界框相对比较快。设置分区的工作量似乎比设置分区对查询的帮助要多。你能给出一个在这个表上运行的查询的例子吗?我假设您有一个观点,并且正在尝试尽快在这个public.regions表中找到它。public.regions是否自行连接到自身以获得不同的级别,每个级别都有自己的多边形?级别,位置索引可以help@Twelfth是的,现在我正在尽可能快地在区域表中找到一个点。示例查询是
从包含((位置),(GeomFromText('Point(11.562424 48.148679)))的区域中选择id、名称和级别尝试在pg查询中使用ST_contains…在那里可能会执行得更好。您能给出上面查询的解释计划结果吗?…只是为了确保索引被正确使用,我想您可以扩展索引以提高效率。通过使用lat/lon提取国家代码并将该国家代码插入到表中并在此基础上创建索引,可以更好地处理按大陆划分的表。