O MySQL pode criar índices espaciais usando uma sintaxe similar
àquela usada para criar índices regulares, mas extendida com a
palavra-chave SPATIAL
. Colunas espaciais
indexadas devem ser declaradas como NOT NULL
.
Os seguintes exemplos demonstram como criar índices de colunas
espaciais.
Com CREATE TABLE
:
mysql> CREATE TABLE geom (g GEOMETRY NOT NULL, SPATIAL INDEX(g));
Com ALTER TABLE
:
mysql> ALTER TABLE geom ADD SPATIAL INDEX(g);
Com CREATE INDEX
:
mysql> CREATE SPATIAL INDEX sp_index ON geom (g);
Para remover índices espaciais, use ALTER
TABLE
ou DROP INDEX
:
Com ALTER TABLE
:
mysql> ALTER TABLE geom (ADD SPATIAL KEY(g));
Com DROP INDEX
:
mysql> DROP INDEX sp_index ON geom;
Example: Suponha que uma tabela geom
contém
mais de 32000 geometrias, que estão armazenadas na coluna
g
do tipo GEOMETRY
. A
tabela também tem um campo AUTO_INCREMENT
fid
, armazenando valores dos IDs de objetos.
mysql>SHOW FIELDS FROM 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 adicionar um índice espacial na coluna
g
, use esta instrução:
mysql> ALTER TABLE geom ADD SPATIAL INDEX(g);
Query OK, 32376 rows affected (4.05 sec)
Records: 32376 Duplicates: 0 Warnings: 0
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.