Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


11.5.3.6 空間インデックスの作成

MyISAM テーブルでは、MySQL は、通常のインデックスを作成するための似た構文を使用するが、SPATIAL キーワードを使用して、空間インデックスを作成できます。空間インデックスのカラムは、NOT NULL と宣言する必要があります。次の各例では空間インデックスの作成方法を示します。

  • CREATE TABLE を使用する場合:

    CREATE TABLE geom (g GEOMETRY NOT NULL, SPATIAL INDEX(g)) ENGINE=MyISAM;
  • ALTER TABLE を使用する場合:

    ALTER TABLE geom ADD SPATIAL INDEX(g);
  • CREATE INDEX を使用する場合:

    CREATE SPATIAL INDEX sp_index ON geom (g);

SPATIAL INDEX は R ツリーインデックスを作成します。空間カラムの非空間インデックスをサポートするストレージエンジンでは、B ツリーインデックスが作成されます。空間値に対する B ツリーインデックスは、正確な値の検索に役立ちますが、範囲スキャンには役立ちません。

空間カラムのインデックス作成の詳細については、セクション13.1.13「CREATE INDEX 構文」を参照してください。

空間インデックスを削除するには、次のように ALTER TABLE または DROP INDEX を使用します。

  • ALTER TABLE を使用する場合:

    ALTER TABLE geom DROP INDEX g;
  • DROP INDEX を使用する場合:

    DROP INDEX sp_index ON geom;

例: テーブル geom に 32,000 件を超える幾何図形が含まれていて、それらの図形が型 GEOMETRY のカラム g に格納されているものとします。またこのテーブルには、オブジェクト ID の値を格納するための AUTO_INCREMENT カラム fid も含まれています。

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)

カラム g に空間インデックスを追加するには、次のステートメントを使用します。

mysql> ALTER TABLE geom ADD SPATIAL INDEX(g) ENGINE=MyISAM;
Query OK, 32376 rows affected (4.05 sec)
Records: 32376  Duplicates: 0  Warnings: 0

User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.