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.
