2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > mysql空间是什么格式_MySQL数据类型 - 空间数据类型 (6)

mysql空间是什么格式_MySQL数据类型 - 空间数据类型 (6)

时间:2023-02-26 11:58:08

相关推荐

mysql空间是什么格式_MySQL数据类型 - 空间数据类型 (6)

获取空间数据

存储在表中的几何值可以用内部格式获取,也可以将其转换为WKT或WKB格式。

●获取内部格式的空间数据:

在表到表传输中,使用内部格式获取几何值非常有用:

●获取WKT格式的空间数据:

ST_AsText()函数的作用是:将几何图形从内部格式转换为WKT字符串。

●获取WKB格式的空间数据:

ST_AsBinary()函数的作用是:将几何图形从内部格式转换为包含WKB值的BLOB。

优化空间分析

对于MyISAM和InnoDB表,可以使用SPATIAL索引优化包含空间数据的列的搜索操作。最典型的操作是:

●搜索包含给定点的所有对象的点查询

●搜索与给定区域重叠的所有对象的区域查询

MySQL对空间列上的SPATIAL索引使用具有二次分割的R树。使用几何体的最小边界矩形(MBR)构建SPATIAL索引。对于大多数几何体,MBR是包围几何体的最小矩形。对于水平或垂直的linestring,MBR是一个退化为linestring的矩形。对于一个点,MBR是一个退化为该点的矩形。

也可以在空间列上创建普通索引。在非SPATIAL索引中,必须为除POINT列之外的任何空间列声明一个前缀。

MyISAM和InnoDB同时支持SPATIAL索引和非SPATIAL索引。其他存储引擎支持非SPATIAL索引。

创建空间索引

对于InnoDB和MyISAM表,MySQL可以使用类似于创建常规索引的语法创建空间索引,但是使用SPATIAL关键字。空间索引中的列必须声明为NOT NULL。以下示例演示如何创建空间索引:

●使用 CREATE TABLE:

●使用 ALTER TABLE:

●使用 CREATE INDEX:

SPATIAL INDEX创建R树索引。对于支持空间列的非空间索引的存储引擎,引擎将创建B树索引。空间值上的B树索引对于精确的值查找非常有用,但对于范围扫描则没用。

优化器可以使用有SRID约束的列上定义的空间索引。

要删除空间索引,请使用ALTER TABLE或DROP INDEX:

●使用 ALTER TABLE:

●使用 DROP INDEX:

示例:假设一个表geom包含32000多个几何图形,这些几何图形存储在GEOMETRY类型的g列中。该表还有一个AUTO_INCREMENT列fid,用于存储对象ID值。

要在g列上添加空间索引,请使用以下语句:

使用空间索引

对于WHERE子句使用MBRContains() 或者 MBRWithin()等函数的查询,优化器将调查是否可以在搜索中使用可用的空间索引。以下查询将查找给定矩形中的所有对象:

使用EXPLAIN检查此查询的执行方式:

检查没有空间索引会发生什么:

不使用空间索引执行SELECT语句会产生相同的结果,但会导致执行时间从0.00秒增加到0.46秒:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。