インデックスの変更

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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

重要

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

このトピックの内容

SQL Server Management Studio を使用する

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

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

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

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

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

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

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

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

Transact-SQL の使用

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

次の例では、AdventureWorks データベース内で、DROP_EXISTING オプションを使って Production.WorkOrder テーブルの ProductID 列にある既存のインデックスを削除して再作成します。 ここではオプション FILLFACTOR および PAD_INDEX も設定されています。

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

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

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

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

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

参照

CREATE INDEX (Transact-SQL)
ALTER INDEX (Transact-SQL)
INDEXPROPERTY (Transact-SQL)
sys.indexes (Transact-SQL)
sys.index_columns (Transact-SQL)
インデックス オプションの設定
インデックスの名前変更