空間インデックスの作成、変更、および削除
適用対象: SQL Server
Azure SQL データベース
Azure SQL Managed Instance
空間インデックスは、 geometry データ型や geography データ型の列 ( 空間列) に対する一部の操作をより効率的に実行できます。 1 つの空間列に対して複数の空間インデックスを指定できます。 たとえば、1 つの列の異なるテセレーション パラメーターのインデックスを作成する場合などに便利です。
空間インデックスの作成にはいくつかの制限があります。 詳細については、このトピックの「 空間インデックスに関する制限 」を参照してください。
Note
空間インデックスとパーティションやファイル グループとの関係については、「CREATE SPATIAL INDEX (Transact-SQL)」の「解説」をご覧ください。
空間インデックスの作成、変更、および削除
空間インデックスを作成するには
Transact-SQL を使用して空間インデックスを作成するには
CREATE SPATIAL INDEX (Transact-SQL)
Management Studio の [新しいインデックス] ダイアログ ボックスを使用して空間インデックスを作成するには
Management Studio で空間インデックスを作成するには
オブジェクト エクスプローラーで、 SQL Server データベース エンジン のインスタンスに接続し、そのインスタンスを展開します。
[データベース]を展開し、指定されたインデックスを含むテーブルが格納されたデータベースを展開して、 [テーブル]を展開します。
インデックスを作成するテーブルを展開します。
新しいインデックス を右クリックし、新しいインデックス を選択します。
[インデックス名] フィールドにインデックスの名前を入力します。
[インデックスの種類] ボックスの一覧の [空間]をクリックします。
インデックスを作成する空間列を指定するには、 [追加]をクリックします。
[<テーブル名> から列を選択] ダイアログ ボックスで、対応するチェック ボックスをオンにすることで、geometry 型または geography 型の列を選択します。 その他の空間列は編集できなくなります。 別の空間列を選択するには、先に現在選択されている列の選択を解除する必要があります。 完了したら、 [OK] をクリックします。
[インデックス キー列] グリッドで、選択した列を確認します。
[インデックスのプロパティ] ダイアログ ボックスの [ページの選択] ペインで、 [空間]をクリックします。
[空間] ページで、インデックスの空間プロパティに対して使用する値を指定します。
geometry 型の列にインデックスを作成する場合は、境界ボックスの座標 (X-min,Y-min) と (X-max,Y-max) を指定する必要があります。 geography 型の列のインデックスの場合は、 [地理グリッド] テセレーション スキームを指定すると境界ボックスのフィールドが読み取り専用になります。地理グリッド テセレーションでは境界ボックスは使用されません。
また、 [オブジェクトごとのセル数] フィールドに既定以外の値を指定したり、テセレーション スキームの任意のレベルのグリッド密度を指定したりすることもできます。 オブジェクトあたりのセルの既定の数は、SQL Server 2008 (10.0.x) の場合は 16、SQL Server 2012 (11.x) 以上の場合は 8、既定のグリッド密度は SQL Server 2008 (10.0.x) の場合は ミディアム です。
SQL Server では、テセレーション スキームに GEOMETRY_AUTO_GRID または GEOGRAPHY_AUTO_GRID を選択することができます。 GEOMETRY_AUTO_GRID または GEOGRAPHY_AUTO_GRID を選択すると、レベル 1、レベル 2、レベル 3、およびレベル 4 のグリッド密度のオプションが無効になります。
これらのプロパティの詳細については、「 [インデックスのプロパティ] の F1 ヘルプ」をご覧ください。
OK をクリックします。
Note
同じ空間列または異なる空間列に別の空間インデックスを作成するには、上の手順を繰り返します。
Management Studio のテーブル デザイナーを使用して空間インデックスを作成するには
テーブル デザイナーで空間インデックスを作成するには
オブジェクト エクスプローラーで、空間インデックスを作成するテーブルを右クリックし、 [デザイン]をクリックします。
[テーブル デザイナー] にテーブルが表示されます。
インデックスを作成する geometry 列または geography 列を選択します。
[テーブル デザイナー] メニューの [空間インデックス]をクリックします。
[空間インデックス] ダイアログ ボックスの [追加]をクリックします。
[選択された空間インデックス] ボックスの一覧で新しいインデックスを選択し、右側のグリッドで空間インデックスのプロパティを設定します。 プロパティの詳細については、「[空間インデックス] ダイアログ ボックス Visual Database Tools」をご覧ください。
空間インデックスを変更するには
-
重要
BOUNDING_BOX や GRID など、空間インデックス固有のオプションを変更するには、DROP_EXISTING = ON を指定する CREATE SPATIAL INDEX ステートメントを使用するか、空間インデックスを削除して新しく作成します。 例については、「CREATE SPATIAL INDEX (Transact-SQL)」を参照してください。
空間インデックスを削除するには
Transact-SQL を使用して空間インデックスを削除するには
DROP INDEX (Transact-SQL)
Management Studio を使用してインデックスを削除するには
インデックスの削除
Management Studio のテーブル デザイナーを使用して空間インデックスを削除するには
テーブル デザイナーで空間インデックスを削除するには
オブジェクト エクスプローラーで、削除する空間インデックスが含まれているテーブルを右クリックし、 [デザイン]をクリックします。
[テーブル デザイナー] にテーブルが表示されます。
[テーブル デザイナー] メニューの [空間インデックス]をクリックします。
[空間インデックス] ダイアログ ボックスが表示されます。
[選択された空間インデックス] 列で削除するインデックスをクリックします。
[Delete] をクリックします。
空間インデックスに関する制限
空間インデックスは、 geometry 型または geography型の列にのみ作成できます。
テーブルおよびビューの制限
空間インデックスは、主キーがあるテーブルでしか定義できません。 テーブルの主キー列の最大数は 15 です。
インデックス キー レコードの最大サイズは 895 バイトです。 このサイズを超えるとエラーが発生します。
Note
主キーのメタデータは、テーブルに空間インデックスが定義されていると変更できません。
インデックス付きビューに対して空間インデックスを指定することはできません。
複数の空間インデックスに関する制限
空間インデックスは、サポートされているテーブルの任意の空間列に 249 個まで作成できます。 同じ空間列に複数の空間インデックスを作成すると、1 つの列の異なるテセレーション パラメーターのインデックスを作成する場合などに便利です。
一度に作成できる空間インデックスは 1 つだけです。
空間インデックスとプロセスの並列処理
インデックスの構築では、プロセスの並列処理を使用できます。
バージョンの制限事項
SQL Server 2012 (11.x) で導入された空間テセレーションは、SQL Server 2008 R2 (10.50.x) または SQL Server 2008 (10.0.x) にレプリケートできません。 SQL Server 2008 R2 (10.50.x) データベースまたは SQL Server 2008 (10.0.x) データベースとの下位互換性が必要な場合は、空間インデックスに SQL Server 2008 R2 (10.50.x) または SQL Server 2008 (10.0.x) 空間テセレーションを使用する必要があります。