パフォーマンス向上のための必須スキル:SQL Serverで適切なインデックスを作成する方法
SQL Serverにおけるインデックス名の要件:詳細解説
SQL Serverにおいて、インデックス名は、テーブルまたはビュー内では一意である必要があります。しかし、データベース全体で一意である必要はありません。つまり、異なるテーブルに同じ名前のインデックスを作成することは可能です。
この規則は、非クラスター化インデックスとクラスター化インデックスの両方に適用されます。
例
次の例は、Customers
テーブルと Orders
テーブルにそれぞれ idx_customer_id
という名前のインデックスを作成する方法を示しています。
-- Customers テーブルにインデックスを作成する
CREATE NONCLUSTERED INDEX idx_customer_id
ON Customers (customer_id);
-- Orders テーブルにインデックスを作成する
CREATE NONCLUSTERED INDEX idx_customer_id
ON Orders (customer_id);
このコードはエラーなく実行されます。なぜなら、各インデックスは異なるテーブルに属しているため、名前が重複しても問題ないからです。
インデックス名の命名規則
インデックス名には、次の規則が適用されます。
- 予約済みキーワードは使用できません。
- 長さは最大128文字です。
- 大文字と小文字は区別されます。
- 空白文字は使用できません。
- 英字、数字、アンダースコア(_)のみ使用できます。
推奨事項
インデックス名を命名する際には、次の点に注意することをお勧めします。
- 他のオブジェクトと区別しやすい名前を付けましょう。
- インデックスの目的を反映した名前を付けましょう。
- わかりやすく、意味のある名前を付けましょう。
- インデックス名を命名する際には、規則と推奨事項に従ってください。
- SQL Server では、インデックス名はテーブルまたはビュー内で一意である必要がありますが、データベース全体で一意である必要はありません。
CREATE NONCLUSTERED INDEX idx_customer_id
ON Customers (customer_id);
解説
(customer_id)
:インデックスキーとなる列を指定します。この例では、customer_id
列をインデックスキーとしています。Customers
:インデックスを作成するテーブルの名前です。idx_customer_id
:インデックスの名前です。この例では、idx_customer_id
という名前をインデックスに付けます。CREATE NONCLUSTERED INDEX
:非クラスター化インデックスを作成することを指定します。
このインデックスを作成すると、customer_id
列の値に基づいて顧客レコードをすばやく検索できるようになります。
この例では、Orders
テーブルに order_id
列と customer_id
列を基準とした複合インデックスを作成します。
CREATE NONCLUSTERED INDEX idx_order_customer
ON Orders (order_id, customer_id);
- プライマリキー制約を持つテーブルにインデックスを作成する
CREATE TABLE Customers (
customer_id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);
CREATE UNIQUE NONCLUSTERED INDEX idx_email
ON Customers (email);
- フルテキストインデックスを作成する
CREATE FULLTEXT INDEX idx_ft_description
ON Products (description);
SSMS は、SQL Server を管理および構成するためのグラフィカルツールです。SSMS を使用してインデックスを作成するには、次の手順に従います。
- オブジェクトエクスプローラーで、インデックスを作成するテーブルまたはビューに移動します。
- テーブルまたはビューを右クリックし、コンテキストメニューから [新しいインデックス] を選択します。
- [OK] をクリックしてインデックスを作成します。
Azure portal を使用する
Azure portal を使用して Azure SQL Database または SQL Server Managed Instance でインデックスを作成することもできます。手順については、次のドキュメントを参照してください。
DDL スクリプトを使用する
インデックスを作成する DDL スクリプトを生成することもできます。DDL スクリプトを生成するには、SSMS またはサードパーティ製のツールを使用できます。
sql-server