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