インデックスの変更

このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server 2012 のインデックスを変更する方法について説明します。

重要な注意事項重要

PRIMARY KEY 制約または UNIQUE 制約の結果として作成されたインデックスは、この方法を使用して変更することはできません。 このような場合には、制約を変更する必要があります。

このトピックの内容

  • インデックスを変更するために使用するもの:

    SQL Server Management Studio

    Transact-SQL

SQL Server Management Studio の使用

インデックスを変更するには

  1. オブジェクト エクスプローラーで、SQL Server データベース エンジンのインスタンスに接続し、そのインスタンスを展開します。

  2. [データベース] を展開し、テーブルが属するデータベースを展開して、[テーブル] を展開します。

  3. インデックスが属するテーブルを展開し、[インデックス] を展開します。

  4. 変更するインデックスを右クリックし、[プロパティ] をクリックします。

  5. [インデックスのプロパティ] ダイアログ ボックスで、目的の変更を行います。 たとえば、インデックス キーの列の追加や削除を行うことができます。また、インデックス オプションの設定も変更できます。

インデックス列を変更するには

  • インデックス列の位置を追加、削除、または変更するには、[インデックスのプロパティ] ダイアログ ボックスの [全般] ページをクリックします。

[トップに戻る] リンクで使用される矢印アイコン[Top]

Transact-SQL の使用

インデックスを変更するには

  1. データベース エンジンに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。 次の例では、DROP_EXISTING オプションを使って、Production.WorkOrder テーブルの ProductID 列にある既存のインデックスを削除して再作成します。 ここではオプション FILLFACTOR および PAD_INDEX も設定されています。

    USE AdventureWorks2012;
    GO
    CREATE NONCLUSTERED INDEX IX_WorkOrder_ProductID
        ON Production.WorkOrder(ProductID)
        WITH (FILLFACTOR = 80,
            PAD_INDEX = ON,
            DROP_EXISTING = ON);
    GO
    

    次の例では、ALTER INDEX を使用して、AK_SalesOrderHeader_SalesOrderNumber インデックスのいくつかのオプションを設定します。

    USE AdventureWorks2012;
    GO
    ALTER INDEX AK_SalesOrderHeader_SalesOrderNumber ON
        Sales.SalesOrderHeader
    SET (
        STATISTICS_NORECOMPUTE = ON,
        IGNORE_DUP_KEY = ON,
        ALLOW_PAGE_LOCKS = ON
        ) ;
    GO
    

インデックス列を変更するには

  • インデックス列の位置を追加、削除、または変更するには、インデックスを削除してから再作成する必要があります。

関連項目

参照

CREATE INDEX (Transact-SQL)

ALTER INDEX (Transact-SQL)

INDEXPROPERTY (Transact-SQL)

sys.indexes (Transact-SQL)

sys.index_columns (Transact-SQL)

概念

インデックス オプションの設定

インデックスの名前変更