什么是空间索引以及何时使用它?

时间:2010-02-13 03:28:11

标签: mysql indexing spatial-index

与大多数普通的PHP Web开发人员一样,我使用MySql作为RDBMS。 MySql(与其他RDBMS一样)也提供了SPATIAL INDEX功能,但我不是很好。我用谷歌搜索了它,但没有找到明确的现实世界的例子来澄清我对它的不良认识。

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

4 个答案:

答案 0 :(得分:17)

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

答案 1 :(得分:6)

空间索引就像普通索引,具有这种差异,即空间对象不是1D数据点而是在更高维度空间(例如2D)中,因此诸如BTree的普通索引不适合索引这样的数据。众所周知的空间索引技术是R-tree(Google on the wikipedia)

答案 2 :(得分:0)

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

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

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

您可以在此处找到示例,找到更好的主意:-https://medium.com/sysf/playing-with-geometry-spatial-data-type-in-mysql-645b83880331

答案 3 :(得分:-5)

使用空间索引最适合搜索精确匹配值查找,而不是范围扫描。它主要在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-lab-release/