MySQL puede crear índices espaciales utilizando una sintaxis
similar a la que se utiliza para crear índices normales, pero
extendida con la palabra clave SPATIAL
. Las
columnas espaciales que están indexadas, deben ser declaradas,
actualmente, como NOT NULL
. Los siguientes
ejemplos demuestran cómo crear índices espaciales.
Con CREATE TABLE
:
mysql> CREATE TABLE geom (g GEOMETRY NOT NULL, SPATIAL INDEX(g));
Con ALTER TABLE
:
mysql> ALTER TABLE geom ADD SPATIAL INDEX(g);
Con CREATE INDEX
:
mysql> CREATE SPATIAL INDEX sp_index ON geom (g);
Para eliminar índices espaciales, utilice ALTER
TABLE
o DROP INDEX
:
Con ALTER TABLE
:
mysql> ALTER TABLE geom DROP INDEX g;
Con DROP INDEX
:
mysql> DROP INDEX sp_index ON geom;
Ejemplo: Suponga una tabla geom
que contiene
más de 32000 geometrías, que están almacenadas en la columna
g
del tipo GEOMETRY
. La
tabla también tiene una columna
AUTO_INCREMENT
llamada fid
para almacenar valores de ID de objetos.
mysql> DESCRIBE geom; +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+----------------+ | fid | int(11) | | PRI | NULL | auto_increment | | g | geometry | | | | | +-------+----------+------+-----+---------+----------------+ 2 rows in set (0.00 sec) mysql> SELECT COUNT(*) FROM geom; +----------+ | count(*) | +----------+ | 32376 | +----------+ 1 row in set (0.00 sec)
Para añadir un índice espacial en la columna
g
, utilice esta sentencia:
mysql> ALTER TABLE geom ADD SPATIAL INDEX(g); Query OK, 32376 rows affected (4.05 sec) Records: 32376 Duplicates: 0 Warnings: 0
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.