10bet网址
MySQL 8.0参考手册
相关文件10bet官方网站 下载本手册 从本手册中摘录

11.4.11使用空间索引

优化器调查可用空间索引是否可以涉及使用诸如的函数的查询中的搜索查询MBRContains()或者mbrwithin()在里面在哪里条款。以下查询查找给定矩形中的所有对象:

mysql>设置@poly =  - >'多边形((30000 15000,31000 15000,31000 16000,30000 16000,30000 15000))';MySQL>从Geom中选择FID,ST_ASTEXT(G) - > MBRContains(ST_GEOMFROMTEXT(@poly),g);+ ----- + ------------------------------------------------------- + |FID |st_astext(g)|+ ----- + ------------------------------------------------------- + |21 |Linestring(30350.4 15828.8,30350.6 15845,30333.8 15845,30333.8 15845,30 ... | | 22 | Linestring(30350.6 15871.4,30350.6 15887.8,3034 15887.8,... | | 23 | Linestring(30350.6 15914.2,30350.6 15930.4,3035.6 15930.4,30334 15930.4,..。| | 24 | Linestring(30290.2 15823,30290.2 15839.4,30273.4 15839.4,... | | 25 | Linestring(30291.4 158662.4,30274.8 15882. ... | | 26 | Linestring(30291.6 15918.2,30291.6 15934.4,3027515934.4,... | | 249 | Linestring(30337.8 15938.6,30337.8 15946.8,30320.4 15946. | 1 | Linestring(30250.4 15129.2,30248.8 15138.4,30238.2 15138. | | | 2 | Linestring(30220.2 15122.8,30217.2 15137.8,30207.6 15136,... | | 3 | Linestring(30179 15114.4,30176.6 15129.4,30167 15128,3016 ... | | 4 | Linestring(30155.2 15121.4,30140.4 15118.6,30142 15109,30 ... | 5| Linestring(30192.4 15085,30177.6 15082.2,30179.2 15072.4,... | | 6 | Linestring(30244 15087,30229 15086.4,30229.4 15076.4,3024 ... | | 7 | Linestring(30200.6 15059.4,30185.6 15048.8,。.. | | | 10 | Linestring(30179.6 15017.8,30181 15002.8,30190.8 15003.6, ... | | 11 | LINESTRING(30154.2 15000.4,30168.6 15004.8,30166 15014.2, ... | | 13 | LINESTRING(30105 15065.8,30108.4 15050.8,30118 15053,3011 ... | | 154 | LINESTRING(30276.2 15143.8,30261.4 15141,30263 15131.4,30 ... | | 155 | LINESTRING(30269.8 15084,30269.4 15093.4,30258.6 15093,30 ... | | 157 | LINESTRING(30128.2 15011,30113.2 15010.2,30113.6 15000.4, ... | +-----+---------------------------------------------------------------+ 20 rows in set (0.00 sec)

解释要检查执行此查询的方式:

mysql>设置@poly =  - >'多边形((30000 15000,31000 15000,31000 16000,30000 16000,30000 15000))';MySQL>从Geom解释SELECT FID,ST_ASTEXT(G) - > MBRContains(ST_GEOMFROMTEXT(@poly),g)\ g ***************************** 1.行*************************** ID:1 Select_type:简单表:GEOM类型:Aruitay_key_key:G键:g key_len:32 ref:null行:50额外:使用设置中的1行(0.00秒)

检查没有空间指数的情况下会发生什么:

mysql>设置@poly =  - >'多边形((30000 15000,31000 15000,31000 16000,30000 16000,30000 15000))';MySQL>解释FRECORE index(g)的SELECT FID,ST_ASTEXT(G),其中 - > MBRContains(ST_GEOMFROMTEXT(@poly),g)\ g *************************** 1.行*************************** ID:1 SELECT_TYPE:简单表:GEOM类型:All Astax_keys:null键:null key_len:null ref:null行:32376额外:使用设置的1行(0.00秒)

执行选择没有空间索引的语句产生相同的结果,但导致执行时间从0.00秒上升到0.46秒:

mysql>设置@poly =  - >'多边形((30000 15000,31000 15000,31000 16000,30000 16000,30000 15000))';MySQL> SELECT FID,ST_ASTEXT(g)从Geom Ignore索引(g)其中 - > mbrcontains(st_geomfromtext(@poly),g);+ ----- + ------------------------------------------------------- + |FID |st_astext(g)|+ ----- + ------------------------------------------------------- + |1 |Linestring(30250.4 15129.2,30248.8 15138.4,30238.2 15136. ... | | 2 | 2 | Linestring(30220.2 15122.8,30217.2 15137.8,30207.6 15136,... | | 3 | Linestring(30179 15114.4,30176.6 15129.4,30167 15128,3016 ..。| | | 4 | Linestring(30155.2 15121.4,30140.4 15118.6,30142 15109,30 ... | | 5 | Linestring(30192.4 15085,30177.6 15082.2,30179.2 15072.4,... | | 6 | Linestring(30244 15087,30229 15086.2,30229.4 15076.4,3024 ... | 7 | Linestring(30200.6 15059.4,30185.6 15058.6 15058.8,... | | 10 | Linestring(30179.6 15017.8,30181 15002.8,30181 15002.8,30181 15002.8,30190.8 15003.6,... | | 11 | Linestring(30154.215000.4,30168.6 15004.8,30166 15014.2,... | | 13 | Linestring(30105 15065.8,30108.4 15050.8,30118 15053,3011 ... | | 21 | Linestring(30350.4 15828.8,30350.6 15845,30333.8 15845,30333.8 15845,30333.8 15845,30333.8 | 22 | LINESTRING(30350.6 15871.4,30350.6 15887.8,30334 15887.8, ... | | 23 | LINESTRING(30350.6 15914.2,30350.6 15930.4,30334 15930.4, ... | | 24 | LINESTRING(30290.2 15823,30290.2 15839.4,30273.4 15839.4, ... | | 25 | LINESTRING(30291.4 15866.2,30291.6 15882.4,30274.8 15882. ... | | 26 | LINESTRING(30291.6 15918.2,30291.6 15934.4,30275 15934.4, ... | | 154 | LINESTRING(30276.2 15143.8,30261.4 15141,30263 15131.4,30 ... | | 155 | LINESTRING(30269.8 15084,30269.4 15093.4,30258.6 15093,30 ... | | 157 | LINESTRING(30128.2 15011,30113.2 15010.2,30113.6 15000.4, ... | | 249 | LINESTRING(30337.8 15938.6,30337.8 15946.8,30320.4 15946. ... | +-----+---------------------------------------------------------------+ 20 rows in set (0.46 sec)