繁体   English   中英

什么是空间索引,我应该什么时候使用它?

[英]What is a SPATIAL INDEX and when should I use it?

像大多数普通 PHP Web 开发人员一样,我使用 MySql 作为 RDBMS。 MySql(与其他 RDBMS 一样)也提供空间索引功能,但我不太了解。 我已经用谷歌搜索了它,但没有找到清晰的现实世界的例子来澄清我对它的不了解。

有人可以向我解释一下什么是空间索引,我应该什么时候使用它?

您可以使用空间索引来索引地理对象 - 形状。 空间索引使高效搜索空间重叠的对象成为可能

空间索引就像普通索引,区别在于空间对象不是一维数据点,而是位于更高维度的空间(例如2D)中,因此普通索引(例如BTree)不适合对此类数据进行索引。 著名的空间索引技术是 R-tree(在 wikipedia 上搜索)

当我们需要存储一些用于存储位置的地理数据或者我们需要存储与形状相关的数据时,我们就可以使用它。

例如,假设您正在尝试开发一个应用程序,帮助人们找到附近的餐馆、酒吧、酒吧和其他聚会场所。 简而言之,这将是一个位置发现平台。

从后端的角度来看,我们需要存储这些位置的地理数据,如纬度和经度。 然后我们需要编写函数来计算用户和位置之间的距离(以显示位置离他/她有多远)。 使用相同的函数,我们可以设计一个算法来找到离用户最近的地方或距离他/她给定半径内的最近地点。

您可能会在这里找到更好的想法:- https://medium.com/sysf/playing-with-geometry-spatial-data-type-in​​-mysql-645b83880331

使用空间索引最适合搜索精确匹配值查找,而不是范围扫描。它主要在 MyISAM 表中支持,但从 MySQL 5.7.4 LAB 版本开始,Innodb 也支持。

参考资料:- http://dev.mysql.com/doc/refman/5.5/en/creating-spatial-indexes.html http://mysqlserverteam.com/innodb-spatial-indexes-in-5-7-4-实验室发布/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM