19.6.2. 使用空间索引

优化程序将调查可用的空间索引是否能包含在使用某些函数的查询搜索中,如WHERE子句中的MBRContains()或MBRWithin()函数。例如,假定我们打算找出位于给定矩形中的所有对象:

mysql> SELECT fid,AsText(g) FROM geom WHERE

mysql> MBRContains(GeomFromText('Polygon((30000 15000,31000 15000,31000 16000,30000 16000,30000 15000))'),g);

+-----+-----------------------------------------------------------------------------+

| fid | AsText(g) |

+-----+-----------------------------------------------------------------------------+

| 21 | LINESTRING(30350.4 15828.8,30350.6 15845,30333.8 15845,30333.8 15828.8) |

| 22 | LINESTRING(30350.6 15871.4,30350.6 15887.8,30334 15887.8,30334 15871.4) |

| 23 | LINESTRING(30350.6 15914.2,30350.6 15930.4,30334 15930.4,30334 15914.2) |

| 24 | LINESTRING(30290.2 15823,30290.2 15839.4,30273.4 15839.4,30273.4 15823) |

| 25 | LINESTRING(30291.4 15866.2,30291.6 15882.4,30274.8 15882.4,30274.8 15866.2) |

| 26 | LINESTRING(30291.6 15918.2,30291.6 15934.4,30275 15934.4,30275 15918.2) |

| 249 | LINESTRING(30337.8 15938.6,30337.8 15946.8,30320.4 15946.8,30320.4 15938.4) |

| 1 | LINESTRING(30250.4 15129.2,30248.8 15138.4,30238.2 15136.4,30240 15127.2) |

| 2 | LINESTRING(30220.2 15122.8,30217.2 15137.8,30207.6 15136,30210.4 15121) |

| 3 | LINESTRING(30179 15114.4,30176.6 15129.4,30167 15128,30169 15113) |

| 4 | LINESTRING(30155.2 15121.4,30140.4 15118.6,30142 15109,30157 15111.6) |

| 5 | LINESTRING(30192.4 15085,30177.6 15082.2,30179.2 15072.4,30194.2 15075.2) |

| 6 | LINESTRING(30244 15087,30229 15086.2,30229.4 15076.4,30244.6 15077) |

| 7 | LINESTRING(30200.6 15059.4,30185.6 15058.6,30186 15048.8,30201.2 15049.4) |

| 10 | LINESTRING(30179.6 15017.8,30181 15002.8,30190.8 15003.6,30189.6 15019) |

| 11 | LINESTRING(30154.2 15000.4,30168.6 15004.8,30166 15014.2,30151.2 15009.8) |

| 13 | LINESTRING(30105 15065.8,30108.4 15050.8,30118 15053,30114.6 15067.8) |

| 154 | LINESTRING(30276.2 15143.8,30261.4 15141,30263 15131.4,30278 15134) |

| 155 | LINESTRING(30269.8 15084,30269.4 15093.4,30258.6 15093,30259 15083.4) |

| 157 | LINESTRING(30128.2 15011,30113.2 15010.2,30113.6 15000.4,30128.8 15001) |

+-----+-----------------------------------------------------------------------------+

20 rows in set (0.00 sec)

我们使用EXPLAIN来检查该查询的执行方式(ID列已被删除,以便输出能更好地与页匹配):

mysql> EXPLAIN SELECT fid,AsText(g) FROM geom WHERE

mysql> MBRContains(GeomFromText('Polygon((30000 15000,31000 15000,31000 16000,30000 16000,30000 15000))'),g);

+-------------+-------+-------+---------------+------+---------+------+------+-------------+

| select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+-------------+-------+-------+---------------+------+---------+------+------+-------------+

| SIMPLE | geom | range | g | g | 32 | NULL | 50 | Using where |

+-------------+-------+-------+---------------+------+---------+------+------+-------------+

1 row in set (0.00 sec)

让我们检查一下在没有空间索引的情况下会出现什么:

mysql> EXPLAIN SELECT fid,AsText(g) FROM g IGNORE INDEX (g) WHERE

mysql> MBRContains(GeomFromText('Polygon((30000 15000,31000 15000,31000 16000,30000 16000,30000 15000))'),g);

+-------------+-------+------+---------------+------+---------+------+-------+-------------+

| select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+-------------+-------+------+---------------+------+---------+------+-------+-------------+

| SIMPLE | geom | ALL | NULL | NULL | NULL | NULL | 32376 | Using where |

+-------------+-------+------+---------------+------+---------+------+-------+-------------+

1 row in set (0.00 sec)

执行SELECT语句,忽略空间键:

mysql> SELECT fid,AsText(g) FROM geom IGNORE INDEX (g) WHERE

mysql> MBRContains(GeomFromText('Polygon((30000 15000,31000 15000,31000 16000,30000 16000,30000 15000))'),g);

+-----+-----------------------------------------------------------------------------+

| fid | AsText(g) |

+-----+-----------------------------------------------------------------------------+

| 1 | LINESTRING(30250.4 15129.2,30248.8 15138.4,30238.2 15136.4,30240 15127.2) |

| 2 | LINESTRING(30220.2 15122.8,30217.2 15137.8,30207.6 15136,30210.4 15121) |

| 3 | LINESTRING(30179 15114.4,30176.6 15129.4,30167 15128,30169 15113) |

| 4 | LINESTRING(30155.2 15121.4,30140.4 15118.6,30142 15109,30157 15111.6) |

| 5 | LINESTRING(30192.4 15085,30177.6 15082.2,30179.2 15072.4,30194.2 15075.2) |

| 6 | LINESTRING(30244 15087,30229 15086.2,30229.4 15076.4,30244.6 15077) |

| 7 | LINESTRING(30200.6 15059.4,30185.6 15058.6,30186 15048.8,30201.2 15049.4) |

| 10 | LINESTRING(30179.6 15017.8,30181 15002.8,30190.8 15003.6,30189.6 15019) |

| 11 | LINESTRING(30154.2 15000.4,30168.6 15004.8,30166 15014.2,30151.2 15009.8) |

| 13 | LINESTRING(30105 15065.8,30108.4 15050.8,30118 15053,30114.6 15067.8) |

| 21 | LINESTRING(30350.4 15828.8,30350.6 15845,30333.8 15845,30333.8 15828.8) |

| 22 | LINESTRING(30350.6 15871.4,30350.6 15887.8,30334 15887.8,30334 15871.4) |

| 23 | LINESTRING(30350.6 15914.2,30350.6 15930.4,30334 15930.4,30334 15914.2) |

| 24 | LINESTRING(30290.2 15823,30290.2 15839.4,30273.4 15839.4,30273.4 15823) |

| 25 | LINESTRING(30291.4 15866.2,30291.6 15882.4,30274.8 15882.4,30274.8 15866.2) |

| 26 | LINESTRING(30291.6 15918.2,30291.6 15934.4,30275 15934.4,30275 15918.2) |

| 154 | LINESTRING(30276.2 15143.8,30261.4 15141,30263 15131.4,30278 15134) |

| 155 | LINESTRING(30269.8 15084,30269.4 15093.4,30258.6 15093,30259 15083.4) |

| 157 | LINESTRING(30128.2 15011,30113.2 15010.2,30113.6 15000.4,30128.8 15001) |

| 249 | LINESTRING(30337.8 15938.6,30337.8 15946.8,30320.4 15946.8,30320.4 15938.4) |

+-----+-----------------------------------------------------------------------------+

20 rows in set (0.46 sec)

未使用索引时,该查询的执行时间将从0.00秒上升到0.46秒。

在未来的版本中,空间索引也可能会用于优化其他函数。请参见19.5.4节,“测试几何对象间空间关系的函数”。

mysql扩展文件_MySQL中的空间扩展相关推荐

  1. MySQL中的空间扩展

    目录 19.1. 前言19.2. OpenGIS几何模型 19.2.1. Geometry类的层次19.2.2. 类Geometry19.2.3. 类Point19.2.4. 类Curve19.2.5 ...

  2. mysql中my.cnf文件_MySQL中my.cnf文件选项

    MySQL中my.cnf文件选项 mysqld服务器维护两种变量.全局变量影响服务器的全局操作.会话变量影响具体客户端连接相关操作. 可以在选项文件或命令行中设置全局变量. 用Set命令设置会话变量, ...

  3. mysql表空间转移_mysql共享表空间扩容,收缩,迁移

    mysql共享表空间扩容,收缩,迁移 一.扩容innodb文件 1.关闭mysql db /usr/local/mysql/bin/mysqladmin -S /tmp/mysql3307.sock ...

  4. mysql regexp边界_MySQL中REGEXP正则表达式使用大全

    以前我要查找数据都是使用like后来发现mysql中也有正则表达式了并且感觉性能要好于like,下面我来给大家分享一下mysql REGEXP正则表达式使用详解,希望此方法对大家有帮助. MySQL采 ...

  5. mysql innodb文件_MySQL文件和Innodb引擎文件

    构成MySQL数据库和InnoDB存储引擎表的各种类型文件,组要有以下文件 参数文件:告诉MySQL实例启动时在哪里可以找到,数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置 ...

  6. mysql range用法_MySQL中Explain的用法总结(详细)

    本篇文章给大家带来的内容是关于MySQL中Explain的用法总结(详细),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 执行计划(query Execution plan) 语法e ...

  7. mysql与文件_MySQL——文件

    构成MySQL数据库的各种类型文件,包括:参数文件 日志文件 socket文件(套接字方式连接时需要) pid文件(mysql实例进程id) MySQL表结构文件 存储引擎文件(每个存储引擎自己用来保 ...

  8. mysql 日志文件_Mysql 日志文件类型

    简介: Mysql 中提供了多种类型的日志文件,分别反映 Mysql 的不同信息,了解它们很有必要. 1.Error log ( 错误日志 ) 错误日志记录了 Mysql Server 运行过程中所有 ...

  9. mysql innodb 文件_MySQL与InnoDB相关文件

    原标题:MySQL与InnoDB相关文件 上期回顾 <InnoDB存储引擎> 概要 本章将会分析构成MySQL数据库和InnoDB存储引擎的各种类型文件,这些文件有如下几种: 参数文件:主 ...

最新文章

  1. 机器学习算法源码全解析(三)-范数规则化之核范数与规则项参数选择
  2. java中使用jxl导出Excel表格详细通用步骤
  3. Android数据手册:Android颜色码制表
  4. mybatis resultMap映射学习笔记
  5. 闪修侠、极客修、千机网,手机维修选哪家?
  6. java 冗余,java代码冗余
  7. Linux日志管理工具 journalctl
  8. pytorch下使用LSTM神经网络写诗
  9. 联想笔记本电脑键盘灯怎么开启_解决方案:如何打开Lenovo键盘灯?联想笔记本键盘键盘灯按哪个键?...
  10. 这可能是史上最全的常用学术网站
  11. 微信小程序 canvas type = 2d 绘制海报心得(包括怎么绘制图片和圆角图片和圆角矩形等)
  12. Len和lenB的区别
  13. 我的折腾日记-- Ubuntu 16.04
  14. LeetCode 24.两两交换链表中的节点 C语言
  15. 美颜SDK更换发色、染发功能实现流程
  16. 细说华为和荣耀的关系:潮流的荣耀和稳重的华为
  17. gitlab ip变更runner拉取代码失败、shell启动springboot项目启动起来。
  18. layer弹出层的位置设置
  19. matlab筛选表格数据导出,excel表格里怎么将筛选数据导出-Excel表格在进行筛选,我如何可以导出所有筛选出来......
  20. 四、nginx访问控制

热门文章

  1. 解决Linux中文乱码问题
  2. zimbra邮件服务器部署
  3. 指向老域名的反链丢失问题
  4. Latex 合并pdf文档
  5. 设计模式 可复用面向对象软件的基础_面向对象的可复用设计模式之简单工厂模式(1/24)...
  6. 【入门篇】接口自动化测试
  7. mysql 备库同步_MYSQL主从库同步配置过程
  8. 爬虫入门-京东评论爬取和简单分析[学习笔记]
  9. C/C++全局变量和局部变量作用域问题
  10. 单结晶体管的导电特性_二极管的导电特性