2010-02-13 12 views
31

Como la mayoría de los desarrolladores web PHP promedio, uso MySql como un RDBMS. MySql (como otros RDBMS también) ofrece características de ÍNDICE ESPACIAL, pero no lo entiendo muy bien. Busqué en Google, pero no encontré ejemplos claros del mundo real para aclarar mi mal conocimiento al respecto.¿Qué es un ÍNDICE ESPACIAL y cuándo debería usarlo?

¿Podría alguien explicarme un poco qué es un ÍNDICE ESPACIAL y cuándo debería usarlo?

+5

Demian, fue contestada su pregunta? puede agregar un comentario a mi respuesta si necesita más ayuda. O si eso lo resolvió para usted, sea tan amable de verificar mi respuesta como "la respuesta". TIA, Roland. –

+1

La documentación oficial de MySQL ofrece explicaciones y ejemplos: [Creating Spatial Indexes] (http://dev.mysql.com/doc/refman/5.5/en/creating-spatial-indexes.html) - [Using a Spatial Index] (http://dev.mysql.com/doc/refman/5.5/en/using-a-spatial-index.html) – Jocelyn

Respuesta

17

Puede usar un índice espacial para indexar geo-objetos - formas. El índice espacial permite buscar de manera eficiente objetos que se superponen en el espacio

+4

Aunque es muy específico [Creación de bases de datos espaciales de alto rendimiento] (http://sqlbits.com/Sessions/ Event5/creating_high_performance_spatial_databases) es un gran video para entender cómo los índices espaciales son MUY diferentes de otros índices. –

+0

Simplemente curioso, dado que los índices espaciales son bidimensionales, ¿puedo explotarlos en otros casos de uso, como consultas de rango en datos regulares? –

+0

@MangatRaiModi Si solo se trata de datos enteros regulares, entonces es mejor utilizar un índice normal de btree. Esas consultas de rango de soporte. –

6

El índice espacial es como un índice común con esta diferencia de que los objetos espaciales no son puntos de datos 1D sino que están en un espacio de mayor dimensión (p. Ej. 2D) y, por lo tanto, ordinarios índices como BTree no son apropiados para indexar tales datos. La conocida técnica de índice espacial es R-tree (Google en wikipedia)

-2

El uso del índice espacial es mejor para buscar búsquedas de valores coincidentes exactos, no para escanear el rango. Se admite principalmente en tablas MyISAM, pero desde el lanzamiento de MySQL 5.7.4 LAB, también es compatible con Innodb.

Referencias: - 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/

+1

Primero se llama índice espacial. En segundo lugar, su comentario acerca de que no es para escaneo de rango se aplica a un índice no espacial en un árbol, por lo que no se trata de un índice espacial allí: "Para los motores de almacenamiento que admiten la indexación no espacial de columnas espaciales, el motor crea un índice B-tree Un índice B-tree en valores espaciales es útil para búsquedas de valor exacto, pero no para escaneos de rango ". – jbu

Cuestiones relacionadas