技術共有

SQLインデックス

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. インデックス作成の基本概念

**インデックス** は、データベース管理システム (DBMS) がデータ テーブル内の特定の情報に迅速にアクセスできるようにするために使用されるデータベース内の特別なデータ構造です。インデックスは本の目次に似ており、データの検索を高速化できます。

2. インデックスの役割

  1. クエリ効率の向上: インデックスを使用すると、データベース システムはテーブル内のデータを迅速に見つけることができるため、テーブル全体のスキャンの必要性が減ります。
  2. データの並べ替えとグループ化を最適化する: 並べ替えおよびグループ化操作では、インデックスを使用すると、データの比較と移動の数を大幅に減らすことができます。
  3. データの一意性を確保する: 一意のインデックスまたは主キー インデックスを作成することで、テーブル内のデータの一意性を確保できます。
  4. 効率的なテーブル結合をサポート: 複数のテーブルを含むクエリでは、インデックスを使用するとテーブル間の結合プロセスが高速化されます。

3. 指数の分類

SQL インデックスは、さまざまな標準に従って分類できます。一般的な分類方法は次のとおりです。

  1. ストレージ構造による分類

    • B ツリー インデックス: データベースで最も一般的に使用されるインデックス タイプである B-Tree や B+Tree などが含まれます。
    • ハッシュインデックス: ハッシュ関数を使用してインデックス列のハッシュ値を計算し、データをすばやく見つけます。
    • 全文インデックス: テキスト コンテンツの検索に使用され、複雑なクエリ構文をサポートします。
    • 空間インデックス: 地理情報システム (GIS) の座標データなどの地理空間データを保存するために使用されます。
  2. 機能別に分類

    • 通常のインデックス: 制限のない最も基本的なインデックス タイプ。
    • 一意のインデックス: インデックス列の値が一意である必要があります。
    • 主キーインデックス: テーブル内のデータの各行を一意に識別するために使用される特別な一意のインデックス。
    • 複合インデックス: 複数列を含むインデックス。複数列クエリのパフォーマンスを向上させるために使用されます。

4. インデックス作成の長所と短所

アドバンテージ

  • クエリ効率を向上させます。
  • データの並べ替えとグループ化を最適化します。
  • 効率的なテーブル結合をサポートします。
  • データの一意性を確保します。

欠点がある

  • I/O コストの増加: インデックス ファイルは追加のディスク領域を占有し、ディスク I/O 操作の数が増加する可能性があります。
  • 書き込み操作のパフォーマンスの低下: データを挿入、更新、または削除する場合、インデックスも更新する必要があるため、書き込み操作のパフォーマンスが低下する可能性があります。
  • インデックスが多すぎると、パフォーマンスが低下する可能性があります。インデックスが不適切であったり、インデックスが多すぎると、データベース全体のパフォーマンスが低下する可能性があります。

5. インデックスの使用シナリオ

インデックスの使用に関する決定は、特定のビジネス ニーズとデータの特性に基づいて行う必要があります。一般的な使用シナリオをいくつか示します。

  • クエリ条件に頻繁に出現する列。
  • 並べ替えまたはグループ化操作に参加する列。
  • テーブル結合に頻繁に関与する列。
  • ユーザー ID、電子メール アドレスなど、高度な一意性要件が必要な列。

6. インデックスの作成と保守

インデックスの作成

使えるCREATE INDEXステートメントはデータベースにインデックスを作成します。例えば:

CREATE INDEX idx_name ON table_name (column_name);
  • 1

インデックスの削除

インデックスが必要なくなった場合は、次のように使用できます。DROP INDEXそれを削除するという声明。例えば:

DROP INDEX idx_name ON table_name;
  • 1

インデックスの維持

  • インデックスを定期的に再構築する: データが追加および変更されると、インデックスが断片化する場合があります。インデックスを定期的に再構築すると、パフォーマンスを回復できます。
  • インデックスの使用状況を監視する: データベース管理ツールまたは SQL ステートメントを通じてインデックスの使用状況を監視し、インデックス関連の問題を迅速に発見して解決します。

7. インデックス作成のベストプラクティス

  1. 必要な列のみにインデックスを作成する: 使用頻度が低い列や繰り返し率が高い列にはインデックスを作成しないでください。
  2. 複合インデックスの使用を検討する注: クエリ条件に複数の列が含まれる場合は、クエリのパフォーマンスを向上させるために複合インデックスの作成を検討してください。
  3. インデックスが多すぎるのを避ける: インデックスによってクエリのパフォーマンスが向上しますが、インデックスが多すぎると書き込み操作のパフォーマンスが低下し、ストレージ スペースの消費量が増加します。
  4. インデックス カバレッジ スキャンの使用処置: クエリで必要なデータをインデックス経由のみで取得するようにし、テーブルへのクエリを返さないようにしてください。

インデックス作成の基本原則

  1. データ構造 : インデックスは通常、B ツリー (最も一般的なのは B+ ツリー)、ハッシュ テーブルなどのデータ構造を使用してデータを保存します。これらのデータ構造により、データベース システムはテーブル全体のスキャンよりも高速にデータの検索、挿入、削除、更新を行うことができます。

  2. 分類して保管する : インデックスを作成するとき、データベースはインデックス列の値に基づいてデータを並べ替え、これらの値をインデックス構造に保存します。 B ツリーなどのバランスの取れたツリー構造の場合、この並べ替えおよび階層ストレージ方法によりクエリの効率を確保できます。

  3. キーと値のペア : インデックスは通常、キーと値のペアとして格納されます。キーはインデックス列の値、値はテーブル内の対応する行へのポインタまたは行番号です。このようにして、クエリでインデックス列が使用されると、データベースはデータの物理的な場所を迅速に特定できます。

インデックスの役割

  1. データ取得の高速化 : インデックスの主な機能は、データの検索を高速化することです。インデックスを使用すると、データベースはテーブル全体をスキャンしなくても、データの保存場所をすばやく見つけることができます。これは、データ量が大きいテーブルでは特に重要です。

  2. I/Oコストの削減 : データベース操作 (特にクエリ操作) のパフォーマンスのボトルネックは、ディスク I/O にあることがよくあります。インデックスを使用すると、クエリ中に読み取る必要があるデータの量が大幅に削減され、I/O コストが削減されます。

  3. 並べ替えとグループ化をサポート: インデックスを使用すると、インデックス自体がすでにデータを並べ替えているため、データベースは並べ替えとグループ化の操作をより効率的に実行できます。

  4. データの一意性を実現する: 一意のインデックスにより、インデックス付き列の値がテーブル内で一意であることが保証され、データの整合性と一貫性の維持に役立ちます。

  5. 結合クエリを最適化する: 複数のテーブルを含む結合クエリでは、インデックスにより結合プロセス中に比較および照合する必要がある行の数が大幅に削減され、クエリの効率が向上します。

予防

インデックスによりクエリのパフォーマンスが大幅に向上しますが、次のような制限があります。

  • インデックスのメンテナンスコスト: インデックス自体は追加のストレージ スペースを占有する必要があり、データが挿入、更新、削除されると、それに応じてインデックスも更新する必要があるため、追加のメンテナンス コストが増加します。

  • クエリオプティマイザー : データベース クエリ オプティマイザーは、クエリ条件やテーブル構造などの要素に基づいて、インデックスを使用するかどうか、およびどのインデックスを使用するかを自動的に選択します。したがって、すべてのクエリでインデックスが使用されるわけではありません。

  • インデックスの選択 : インデックスを設計するときは、クエリのパフォーマンスとメンテナンス コストのバランスをとるために、インデックス列とインデックス タイプを慎重に選択する必要があります。インデックスが多すぎると、データ更新のパフォーマンスが低下し、ストレージ コストが増加する可能性があります。


さまざまな種類のインデックスには、それぞれ独自の特性と、データベース内で適用できるシナリオがあります。以下は、いくつかの一般的なインデックス タイプの特性と適用可能なシナリオの詳細な分析です。

1. 通常のインデックス

特徴

  • 一意性の制限がない最も基本的なインデックス タイプ。
  • NULL 値が許可されます。
  • 外部キーとして参照することはできません。
  • テーブルには複数の通常のインデックスを含めることができます。

該当シーン

  • これは、テーブル内のデータのアクセスと取得を高速化するために使用されます。特に、大量のデータが含まれ、頻繁にクエリが実行される列に通常のインデックスを作成する場合に使用され、クエリの効率が大幅に向上します。
  • 通常のインデックスは、クエリ条件に一意性の要件が含まれていない場合に使用できます。

2. ユニークなインデックス

特徴

  • データ列では重複は許可されませんが、NULL 値は許可されます (ただし、NULL は一意性の比較において特別な値とみなされているため、テーブル内に存在できる NULL 値は 1 つだけです)。
  • 外部キーとして参照することはできません。
  • テーブルでは、複数の列に一意のインデックスを作成できます。

該当シーン

  • データの一意性を確保し、データの重複を避けるために使用されます。
  • 特定の列の値または列の組み合わせが一意であることを確認する必要があるシナリオでは、一意のインデックスを使用することでデータの正確性を確保できます。
  • 一意性の要件がクエリ条件に関係する場合、一意のインデックスを使用するとクエリを高速化できます。

3. 主キーインデックス

特徴

  • 主キー インデックスは特別な一意のインデックスであり、データ列の値が一意である必要があるだけでなく、NULL も許可されません。
  • テーブルごとに主キー インデックスは 1 つだけ存在できます。
  • 主キーインデックスは外部キーとして参照できます。

該当シーン

  • データの整合性と一貫性を確保するために、テーブル内のデータの各行を一意に識別するために使用されます。
  • テーブル内の特定の行に迅速にアクセスする必要があるシナリオでは、主キー インデックスを使用するとクエリの効率が大幅に向上します。
  • 主キー インデックスは、テーブル設計とデータベースの最適化において非常に重要な要素であり、データベースのパフォーマンスと保守性に重要な影響を与えます。

4. 総合指数

特徴

  • 複数の列を使用してインデックスを作成します。
  • これらの列を含むクエリの効率を向上させることができます。特に、これらの列がクエリ条件に一緒に表示されることが多い場合に効果的です。
  • インデックスを組み合わせる順序は、クエリ オプティマイザーのインデックスの選択と使用に影響するため、重要です。

該当シーン

  • クエリ条件に複数の列が含まれる場合、結合インデックスを使用すると、スキャンする必要があるデータの量が大幅に削減され、クエリの効率が向上します。
  • 複数の列に対して結合クエリ、並べ替え、またはフィルタリング操作が必要なシナリオでは、結合インデックスを使用するとクエリのパフォーマンスを最適化できます。

5. その他のインデックス タイプ (全文インデックスなど)

特徴

  • フルテキスト インデックスは、テキスト データ内のキーワードを検索するために使用される特別なタイプのインデックスです。
  • データ構造と使用法が通常のインデックスとは異なり、通常は全文検索シナリオで使用されます。

該当シーン

  • 検索エンジンのテキスト検索機能など、大量データのキーワードあいまい検索に適しています。
  • 全文インデックス作成は、テキスト フィールドで複雑な検索 (ワイルドカードを含む検索、同義語検索など) を実行する必要がある場合に、より効率的なソリューションを提供します。

インデックスを作成、表示、削除する方法の詳細な手順は次のとおりです。

インデックスの作成

インデックスを作成するにはさまざまな方法がありますが、それらは次のように要約できます。

  1. テーブル作成時にインデックスを指定する

    • 使用中でCREATE TABLEステートメントを使用してテーブルを作成する場合、列定義の直後にインデックスを指定できます。これには、主キー インデックス、一意のインデックスなどが含まれます。
    • 例 (次の名前のファイルを作成すると仮定します)studentsテーブル、そしてid列に主キー インデックスを作成します):
      CREATE TABLE students (
          id INT AUTO_INCREMENT PRIMARY KEY,
          name VARCHAR(100),
          age INT,
          INDEX idx_name (name) -- 在name列上创建普通索引
      );
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
  2. ALTER TABLE ステートメントを使用してインデックスを追加する

    • テーブルがすでに存在する場合は、次を使用できますALTER TABLEテーブルにインデックスを追加するステートメント。
    • 例(studentsテーブルage列に通常のインデックスを追加します):
      ALTER TABLE students ADD INDEX idx_age (age);
      
      • 1
  3. CREATE INDEX ステートメントを使用してインデックスを作成する

    • 既存のテーブルにインデックスを作成するもう 1 つの方法は、次のとおりです。CREATE INDEX声明。
    • 例(studentsテーブルnameそしてageインデックスを作成するための列の組み合わせ):
      CREATE INDEX idx_name_age ON students (name, age);
      
      • 1

インデックスを見る

インデックスを表示する方法はデータベース システムによって異なりますが、ほとんどのデータベースでは、インデックス情報を表示するための対応するコマンドまたはクエリ メソッドが提供されています。

  1. SHOW INDEX コマンドの使用 (MySQL)

    • MySQL データベースの場合は、次を使用できます。SHOW INDEXテーブルのインデックス情報を表示するコマンド。
    • 例:
      SHOW INDEX FROM students;
      
      • 1
    • これによりリストされますstudentsインデックス名、列名、インデックス タイプなど、テーブルのすべてのインデックス情報。
  2. INFORMATION_SCHEMA.STATISTICS テーブルのクエリ (MySQL)

    • インデックスを確認するもう 1 つの方法は、クエリを実行することです。INFORMATION_SCHEMA.STATISTICS表面。このテーブルには、インデックス情報を含む、データベース内のすべてのテーブルの統計情報が保存されます。
    • クエリの例:
      SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'students';
      
      • 1
  3. システム ビューまたは関数の使用 (他のデータベース システム)

    • 他のデータベース システム (SQL Server、Oracle など) の場合は、インデックス情報を表示するためにシステム ビューまたは特定の関数を使用する必要がある場合があります。具体的な方法については、対応するデータベースの公式ドキュメントを参照してください。

インデックスの削除

インデックスの削除にも、データベース システムに応じて異なる方法が必要です。

  1. DROP INDEX コマンドを使用する

    • ほとんどのデータベース システムは次の使用をサポートしています。DROP INDEXインデックスを削除するコマンド。
    • 例 (MySQL):
      DROP INDEX idx_name ON students;
      
      • 1
    • 注: 一部のデータベース システム (SQL Server など) では、DROP INDEXコマンドの構文は若干異なる場合があり、テーブル名とインデックス名を指定する必要がありますが、ONキーワード。
  2. ALTER TABLE ステートメントを使用する

    • インデックスを削除する別の方法は、次のとおりです。ALTER TABLE声明。
    • 例 (MySQL):
      ALTER TABLE students DROP INDEX idx_age;
      
      • 1
  3. データベース管理ツールを使用する

    • SQL コマンドの使用に加えて、データベース管理ツール (MySQL Workbench、SQL Server Management Studio など) を使用して、インデックスをグラフィカルに作成、表示、削除することもできます。これらのツールは通常、より直観的な操作インターフェイスと豊富な機能オプションを提供します。

予防

  • インデックスを作成、表示、削除するときは、不必要なエラーやデータ損失を避けるために、データベース システムについて十分な知識があることを確認してください。
  • インデックスはクエリの効率を向上させますが、追加の記憶領域も占有し、データの挿入、更新、削除操作のオーバーヘッドが増加する可能性があります。したがって、インデックスを作成する際には、実際の状況に基づいてトレードオフと選択を行う必要があります。
  • インデックスを削除する前に、そのインデックスがもう使用されていないこと、または代替のインデックス作成スキームが利用可能であることを確認してください。そうしないと、インデックスを削除するとクエリのパフォーマンスが低下する可能性があります。

インデックスはデータベースのパフォーマンスに、プラスの影響もあれば、マイナスの影響を与える可能性もある重大な影響を与えます。詳細な分析は次のとおりです。

ポジティブな影響

  1. データ取得の高速化

    • インデックスを使用すると、データの取得を大幅に高速化できます。データベース システムは、インデックスを介して、テーブル全体を 1 つずつスキャンすることなく、ターゲット データの場所を直接見つけることができます。これは大規模なデータ セットで特に重要であり、クエリ効率を大幅に向上させることができます。
    • また、インデックスを使用すると、データベースがスキャンする行数が減り、I/O コストも削減されます。これは、データベース システムがテーブル全体や無関係な大量のデータ行を読み取らなくても、必要なデータをより速く見つけることができるためです。
  2. データベースのパフォーマンスを向上させる

    • インデックスは通常メモリに保存され、迅速にアクセスできるため、インデックスを使用すると、データベース システムでのディスク I/O 操作の数を減らすことができます。これは、特に複雑なクエリや大量のデータを処理する場合に、データベース システム全体のパフォーマンスの向上に役立ちます。
    • インデックスはクエリ プランを最適化し、データベース システムがクエリ操作をより効率的に実行できるようにします。クエリ オプティマイザーはインデックスを使用してより効率的なクエリ プランを生成できるため、クエリの応答時間とスループットが向上します。
  3. データの一意性を確保する

    • 一意のインデックスと主キー インデックスにより、データベース内のデータの一意性が保証されます。これにより、データの整合性と一貫性が維持され、データの重複やエラーが防止されます。

潜在的な悪影響

  1. 必要なストレージスペースの増加

    • インデックスには追加の記憶領域が必要です。大規模なデータベースの場合、インデックスが占有するストレージ スペースが非常に大きくなる可能性があり、データベースのストレージ コストが増加します。
    • インデックスの数が増えると、それに応じてデータベースの全体的なストレージ要件も増加します。したがって、インデックスを作成するときは、ストレージ領域への影響を考慮する必要があります。
  2. 執筆コストを増やす

    • データが挿入、更新、または削除されるたびに、データベース システムはデータ自体を変更するだけでなく、対応するインデックスも更新する必要があります。これにより、書き込み操作のオーバーヘッドが増加し、書き込みパフォーマンスが低下します。
    • 同時書き込み操作のシナリオでは、頻繁なインデックス更新がパフォーマンスのボトルネックになる可能性があります。したがって、インデックスを設計するときは、書き込みパフォーマンスへの影響を考慮する必要があります。
  3. クエリ オプティマイザーの効率を低下させる

    • 場合によっては、インデックスにより、クエリ オプティマイザーが次善のクエリ プランを選択することがあります。これは、インデックスの存在によりクエリ オプティマイザーがクエリ コストを見積もる際に誤解を招くためである可能性があります。
    • したがって、インデックスを作成するときは、それが実際にクエリのパフォーマンスの最適化に役立つかどうかを慎重に検討し、冗長なインデックスや不必要なインデックスの作成を避ける必要があります。
  4. インデックスのメンテナンスコスト

    • インデックスのパフォーマンスを維持するには、定期的なメンテナンスが必要です。これには、インデックスの再構築や再編成、インデックス統計の更新などの操作が含まれます。これらの操作は追加のリソースと時間を消費し、データベースのパフォーマンスに短期的な影響を与える可能性があります。
    • データベース管理者は、適切なインデックス作成戦略の選択、クエリ パフォーマンスの最適化、インデックスの定期的なメンテナンスなど、インデックスを効果的に管理するには、一定の技術レベルを持っている必要があります。

列にインデックスがあり、その中の一部のデータが削除された場合、インデックスの更新は通常、ユーザーが手動で介入することなく、データベース管理システム (DBMS) によって自動的に処理されます。データベース インデックスの目的は、データの取得を高速化することです。インデックスはテーブル内のデータと密接に関係していますが、インデックス自体はデータを格納するのではなく、テーブル内のデータを指すポインタまたは位置情報を格納します。

データの削除を反映するためにインデックスが自動的に更新される方法の詳細な手順は次のとおりです。

インデックス自動更新機構

  1. データ削除操作

    • ユーザーがデータ削除操作を実行したとき(たとえば、DELETEステートメント)、DBMS はまず指定されたデータ行をテーブルから削除します。
    • この削除操作は、テーブル内のデータに影響するだけでなく、データに関連付けられたインデックスにも影響します。
  2. インデックスの更新

    • データ行がテーブルから削除されると、DBMS は影響を受けるすべてのインデックスを自動的に更新します。
    • 削除されたデータ行ごとに、DBMS は対応するインデックス エントリ (つまり、データ行を指すポインタまたは位置情報) をインデックスから削除します。
    • この更新は即時です。つまり、テーブルから行が削除されると、対応するインデックス エントリも即座に削除されます。
  3. パフォーマンスに関する考慮事項

    • インデックスの自動更新によりインデックスとテーブル データの一貫性が保証されますが、パフォーマンスに一定の影響を与える可能性もあります。
    • 特に大量の削除操作を実行する場合、インデックスの更新がパフォーマンスのボトルネックになる可能性があります。
    • したがって、大量の削除操作を実行する前に、パフォーマンスを最適化するためにバッチ削除、インデックスの再構築などの他の戦略を検討する必要がある場合があります。

インデックスの再構築

  • 削除操作により深刻なインデックスの断片化が発生し、クエリのパフォーマンスに影響を与える場合は、インデックスの再構築を検討してください。
  • インデックスの再構築は、インデックスを再構築する操作です。これにより、インデックスの断片化が解消され、クエリのパフォーマンスが向上します。
  • MySQL では、次を使用できます。ALTER TABLEステートメントの一致DROP INDEXそしてADD INDEXインデックスを再構築するオプション。ただし、このプロセスによりテーブルが一時的にロックされ、他のクエリ操作に影響を与える可能性があることに注意してください。

ほとんどのデータベース管理システム (MySQL、PostgreSQL、SQL Server など) では、データベースがインデックスの一貫性を自動的に維持するため、データ削除操作を反映するためにインデックスを手動で更新する必要は通常ありません。テーブルからデータを削除すると、データベースは対応するインデックス エントリをインデックスから自動的に削除します。

ただし、挿入、更新、削除などの頻繁なデータ変更によりインデックスが断片化すると、場合によってはクエリのパフォーマンスが影響を受ける可能性があります。この時点で、インデックスの再構築やインデックスの最適化など、インデックスのメンテナンスに手動で介入することもできます。これは、単一の削除操作を反映するようにインデックスを直接「更新」するわけではありませんが、インデックス全体のパフォーマンスを向上させることができます。

以下に、インデックスに対するデータ削除操作の影響を間接的に反映できる手動インデックス最適化方法をいくつか示します。

  1. インデックスの再構築

    • 使用ALTER TABLEステートメントはインデックスを削除して再作成します。これにより、インデックスから断片化が除去され、インデックスがよりコンパクトで効率的になります。
    • たとえば、MySQL では、次のコマンドを使用してインデックスを再構築できます (インデックスの名前がidx_name、テーブル名はusers):
      ALTER TABLE users DROP INDEX idx_name;
      ALTER TABLE users ADD INDEX idx_name(column_name);
      
      • 1
      • 2
    • 注: インデックスを再構築するとテーブルが一時的にロックされ、他のクエリ操作に影響を与える可能性があるため、オフピーク時に実行することをお勧めします。
  2. テーブルの最適化

    • 使用OPTIMIZE TABLEステートメントを使用して、インデックスを含むテーブルの物理ストレージを再編成します。これにより、テーブルの断片化が軽減され、クエリのパフォーマンスが向上する可能性があります。
    • たとえば、MySQL では、次のコマンドを使用してテーブルを最適化できます (テーブルの名前がusers):
      OPTIMIZE TABLE users;
      
      • 1
    • 注: テーブルの最適化プロセスには時間がかかる場合があり、テーブルが一時的にロックされる場合もあります。
  3. 分析表

    • 使用ANALYZE TABLEステートメントを使用して、インデックスの使用状況を含むテーブル統計を更新します。これは、データベース オプティマイザーがより効率的なクエリ プランを生成するのに役立ちます。
    • たとえば、MySQL では、次のコマンドを使用してテーブルを分析できます (テーブルの名前がusers):
      ANALYZE TABLE users;
      
      • 1
    • テーブルの分析はインデックスの物理構造に直接影響しませんが、データベースがインデックスをより有効に活用するのに役立ちます。
  4. インデックスを定期的にメンテナンスする

    • インデックスの断片化を定期的にチェックし、必要に応じて最適化または再構築します。
    • データベース管理ツールまたはスクリプトを使用して、インデックスのメンテナンス プロセスを自動化することを検討してください。

単一のデータ削除操作を反映するためにインデックスを手動で更新することは、データベースによって自動的に処理されるため、通常は必要ないことに注意することが重要です。ただし、インデックスを定期的にメンテナンスして最適な状態に保つことが重要です。これは上記の方法で実現できます。

さらに、特定のデータ変更を反映するためにインデックスに手動で介入する必要がある場合 (これはまれですが)、データベース管理システムの内部動作をより深く理解し、低レベルのデータベース メンテナンス コマンドの使用を検討する必要がある場合があります。またはツール。ただし、ほとんどの場合、データベースの自動インデックス メンテナンス機能を利用するだけで十分です。