MySQL の空間索引の使用例
【概要】
MySQL の空間索引(SPATIAL INDEX)を用いて、座標データを効率的に検索する例を示す。POINT 型の列に空間索引を作成し、Well-Known Text(WKT)から幾何データを生成する手順を扱う。
【目次】
【サイト内の関連ページ】
テーブル定義の実装例
座標値 x, y と、それらから生成する POINT 型の列 pt を持つテーブルを定義する。空間索引を作成する列は NOT NULL でなければならないため、pt を NOT NULL とする。
CREATE TABLE GDATA (
x DOUBLE NOT NULL,
y DOUBLE NOT NULL,
pt POINT NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
POINT 型データの格納
座標値 x, y から WKT 形式の文字列を組み立て、ST_PointFromText() で POINT 型に変換して pt 列へ格納する。
UPDATE GDATA SET pt = ST_PointFromText(
CONCAT('POINT(', x, ' ', y, ')')
);
空間索引を持つテーブルの作成とデータ投入
pt 列に空間索引(SPATIAL KEY)を定義したテーブルを作成し、GDATA から座標データを投入する。
CREATE TABLE GDATA2 (
x DOUBLE NOT NULL,
y DOUBLE NOT NULL,
pt POINT NOT NULL,
SPATIAL KEY `sp_index` (`pt`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
INSERT INTO GDATA2(x, y, pt)
SELECT x, y, pt FROM GDATA;