我有一个表(其中包括){SMERINT类型的x
和y
字段以及POINT类型的pt
,设置为POINT(x
,{{1 }});
y
和x
具有正常的差异,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
y
和x
始终为INT,仅查询矩形(偶数方形)区域。是的,这是刻在石头上的; - )
主要问题是:
在这种情况下,我是否遗漏了一些关于内容的内容,或者空间数据是否过度?
我有一些MySQL的经验,但从未使用空间数据类型和空间差异。
答案 0 :(得分:1)
你有一个组合x& y INDEX在桌子上?如果是,那么是的,这非常快。 我相信Spatial索引有更广泛的用途。多边形结构可以有许多顶点,矩形是一个更通用的结构的单个案例。
如果矩形边界区域足以满足您的需求,那么我建议您使用x和y字段解决方案,而不是添加地理空间扩展功能的复杂性。