排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
首页
/
MySQL数据类型 - 空间数据类型 (6)
MySQL数据类型 - 空间数据类型 (6)
数据库杂货铺
2021-04-12
1141
获取空间数据
存储在表中的几何值可以用内部格式获取,也可以将其转换为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秒:
官方文档地址:
https://dev.mysql.com/doc/refman/8.0/en/fetching-spatial-data.html
mysql
文章转载自
数据库杂货铺
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨