从SQL点云x、y、z高效选择数据
我在Postgres中有一个SQL表,其列为从SQL点云x、y、z高效选择数据,sql,postgresql,Sql,Postgresql,我在Postgres中有一个SQL表,其列为x,y,z。我在x和y上有索引。表的大小约为3 Gb 要选择数据区域,我运行表单查询: SELECT x, y, z FROM table WHERE (x BETWEEN lowX and highX) AND (y BETWEEN lowY and highY) 这是编写select语句的最有效方法吗?感谢您的建议。SQL是一种声明性语言-您可以使用SQL定义所需的数据;由数据库引擎决定获取数据的最有效方式 也就是说,如果在x和
x
,y
,z
。我在x
和y
上有索引。表的大小约为3 Gb
要选择数据区域,我运行表单查询:
SELECT x, y, z
FROM table
WHERE (x BETWEEN lowX and highX)
AND (y BETWEEN lowY and highY)
这是编写select语句的最有效方法吗?感谢您的建议。SQL是一种声明性语言-您可以使用SQL定义所需的数据;由数据库引擎决定获取数据的最有效方式
也就是说,如果在x
和y
上只有单独的索引,那么只会使用一个索引(将扫描与x
索引匹配的表行,以确定它们是否符合y
和z
标准)。x
和y
上的复合索引将允许引擎只扫描满足这两个条件的项目:
CREATE INDEX table_xy_idx ON table (x, y);
请注意,这会使
x
上的索引过时,因为复合索引可用于查找给定查询的匹配x
值。由于您使用的是postgresql,我建议使用数据类型和。效率取决于查询的选择性,但是值得一试。列是什么数据类型它们都是浮动的。我用的是x,y,z,但它们实际上是网格东距,北距和深度,单位为米,精度为厘米。你用的是哪种数据库管理系统?它们中哪种有更多不同的值?x或y?可能是其中之一。这是一个网格,两个平面上的值大致每隔4厘米。数据输入的确切方式取决于数据的收集方式,传感器的驱动方向。