postgre从SQL点云x,y,z中高效选择数据



我在Postgres中有一个SQL表,其中列为xyz。我有关于xy索引.桌子的大小约为3 Gb

为了选择数据区域,我运行以下形式的查询:

SELECT x, y, z 
FROM table 
WHERE (x BETWEEN lowX and highX) 
AND (y BETWEEN lowY and highY)

这是对 select 语句进行编码的最有效方法吗?感谢您的建议。

SQL是一种声明式语言 - 你使用SQL来定义你想要的数据;由数据库引擎决定获取数据的最有效方式。

也就是说,如果xy上只有单个索引,则只使用一个索引(将扫描与x索引匹配的表行以确定它们是否满足yz条件)。xy复合索引将允许引擎只扫描满足这两个条件的项目:

CREATE INDEX table_xy_idx ON table (x, y);

请注意,这会使您的索引x过时,因为复合索引可用于查找给定查询的匹配x值。

由于您使用的是postgresql,因此我建议使用几何数据类型和空间索引。效率取决于查询的选择性,但是,值得一试。

最新更新