ホームページ >データベース >mysql チュートリアル >クラスター化インデックスと非クラスター化インデックス: データベース最適化における主な違い
SQL のインデックスは、データベースがテーブル内のすべての行をスキャンすることなくデータを迅速に検索できるようにすることで、データベース クエリのパフォーマンスを向上させるために使用されます。クラスター化インデックスと非クラスター化インデックスは 2 つの主要なタイプであり、構造と目的が大きく異なります。
定義:
クラスター化インデックスは、テーブル内のデータの物理的な順序を決定します。テーブルの行はインデックスと同じ順序で保存されます。
特徴:
利点:
欠点:
例:
CREATE CLUSTERED INDEX idx_employee_id ON Employees(EmployeeID);
この場合、EmployeeID 列によって、Employees テーブル内の行の物理的な順序が決まります。
定義:
非クラスター化インデックスは、データの物理的な場所へのポインターを含む、テーブル データとは別の構造を作成します。
特徴:
利点:
欠点:
例:
CREATE CLUSTERED INDEX idx_employee_id ON Employees(EmployeeID);
これにより、行の物理的な順序を変更せずに、LastName 列にインデックスが作成されます。
Feature | Clustered Index | Non-Clustered Index |
---|---|---|
Physical Order | Matches index order | Independent of index order |
Data Storage | Data and index are stored together | Data and index are stored separately |
Quantity Per Table | One per table | Multiple allowed |
Use Case | Range queries, sorting | Filtering or searching by specific values |
Performance | Faster for range scans | Faster for point queries |
Impact on Writes | Higher impact | Lower impact |
非クラスター化インデックス: 特にテーブルに既にクラスター化インデックスがある場合、WHERE、JOIN、またはフィルター操作で頻繁に使用される列に最適です。
以上がクラスター化インデックスと非クラスター化インデックス: データベース最適化における主な違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。