Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SQL点云x、y、z高效选择数据_Sql_Postgresql - Fatal编程技术网

从SQL点云x、y、z高效选择数据

从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和

我在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
y
上只有单独的索引,那么只会使用一个索引(将扫描与
x
索引匹配的表行,以确定它们是否符合
y
z
标准)。
x
y
上的复合索引将允许引擎只扫描满足这两个条件的项目:

CREATE INDEX table_xy_idx ON table (x, y);

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

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

列是什么数据类型它们都是浮动的。我用的是x,y,z,但它们实际上是网格东距,北距和深度,单位为米,精度为厘米。你用的是哪种数据库管理系统?它们中哪种有更多不同的值?x或y?可能是其中之一。这是一个网格,两个平面上的值大致每隔4厘米。数据输入的确切方式取决于数据的收集方式,传感器的驱动方向。