MySQL
では空間インデックスを作成できます。作成時に使用する構文は、通常のインデックスを作成するための構文に似ていますが、SPATIAL
キーワードで拡張されています。
現在インデックス付けされている空間カラムは、NOT
NULL
と宣言されなければなりません。空間インデックスを作成する方法を以下の例に示します。
CREATE TABLE
を使用する場合。
mysql> CREATE TABLE geom (g GEOMETRY NOT NULL, SPATIAL INDEX(g));
ALTER TABLE
を使用する場合。
mysql> ALTER TABLE geom ADD SPATIAL INDEX(g);
CREATE INDEX
を使用する場合。
mysql> CREATE SPATIAL INDEX sp_index ON geom (g);
空間インデックスを破棄するには、ALTER
TABLE
または DROP INDEX
を使用します。
ALTER TABLE
を使用する場合。
mysql> ALTER TABLE geom DROP INDEX g;
DROP INDEX
を使用する場合。
mysql> DROP INDEX sp_index ON geom;
例: テーブル geom
に 32,000
個を超えるジオメトリが格納されており、これらが
GEOMETRY
型の g
で保存されているとします。 このテーブルには
AUTO_INCREMENT
カラム
fid
もあり、このカラムにオブジェクト ID
値が保存されます。
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)
カラム g
で空間インデックスを追加するには、以下のステートメントを使用します。
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.