Criando Índices Espaciais
O MariaDB 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