mysql空间数据速度

时间:2011-04-11 07:25:26

标签: mysql spatial

我有一个表(其中包括){SMERINT类型的xy字段以及POINT类型的pt,设置为POINT(x,{{1 }});
yx具有正常的差异,y具有空间索引集。

分析典型查询

pt

...显示通过select sql_no_cache count(0) from `table_name` where (x between -50 and 50) and (y between -50 and 50); -- vs set @g = GeomFromText('Polygon((-50 -50, 50 -50, 50 50, -50 50, -50 -50))'); select sql_no_cache count(0) from `table_name` where MBRContains(@g, `pt`); x的查询速度提高了1.5倍:
在10次查询中,3.45±0.10ms对4.61±0.14ms yx始终为INT,仅查询矩形(偶数方形)区域。是的,这是刻在石头上的; - )

主要问题是:
在这种情况下,我是否遗漏了一些关于内容的内容,或者空间数据是否过度?

  • MySQL版本为5.1.37
  • 数据库引擎类型为MyISAM(默认)
  • 目前的桌子大小是5k行,计划生产10-30k。

我有一些MySQL的经验,但从未使用空间数据类型和空间差异。

1 个答案:

答案 0 :(得分:1)

你有一个组合x& y INDEX在桌子上?如果是,那么是的,这非常快。 我相信Spatial索引有更广泛的用途。多边形结构可以有许多顶点,矩形是一个更通用的结构的单个案例。

如果矩形边界区域足以满足您的需求,那么我建议您使用x和y字段解决方案,而不是添加地理空间扩展功能的复杂性。