インデックス作成の量とやりすぎのラインは、多くの要因に依存します。 「カテゴリ」テーブルのような小さなテーブルでは、通常、インデックスは必要ないか、必要ありません。実際には、パフォーマンスが低下する可能性があります。その理由は、インデックスを読み取るのにI / O(つまり時間)がかかり、次に一致した行に関連付けられたレコードを取得するのにさらにI/Oと時間がかかるためです。例外は、インデックス内に含まれる列のみをクエリする場合です。
この例では、22行のみのすべての列を取得しているため、インデックスを使用する代わりに、テーブルスキャンを実行してそれらを並べ替える方が高速な場合があります。オプティマイザはこれを実行し、インデックスを無視する場合があります。その場合、インデックスはスペースを占有しているだけで、メリットはありません。 「カテゴリ」テーブルに頻繁にアクセスする場合は、メモリに固定して、データベースサーバーが常にディスクにアクセスしなくてもアクセスできるようにすることを検討してください。
インデックスを追加するときは、ディスクスペース、クエリパフォーマンス、およびテーブルの更新と挿入のパフォーマンスのバランスをとる必要があります。 1日に何百万もの更新が行われるテーブルとは対照的に、静的であまり変更されないテーブルのインデックスを増やすことができます。その時点で、インデックスのメンテナンスの影響を感じ始めるでしょう。ただし、環境で許容できるものは、あなたとあなたの組織によってのみ決定できます。
分析を行うときは、正確な計算を保証できるように、必ずテーブルとインデックスの統計を生成/更新してください。