基本情報技術者試験 練習問題 4:インデックスの作成と性能への影響
SQLのINDEXについて述べた文として、最も適切なものはどれか。
- インデックスを作成するとクエリの検索速度は向上するが、INSERT・UPDATE・DELETE処理は遅くなる可能性がある。
- インデックスはメモリ上にのみ存在するため、データベースのディスク容量には影響しない。
- 複合インデックス(複数列に対するインデックス)は列の順序を考慮する必要がなく、どの順序でもWHERE句で効率的に検索できる。
- インデックスは常に検索性能を向上させるため、すべての列に対してインデックスを作成すべきである。
- プライマリキーは自動的にインデックスが作成されるが、他の列に対しては手動でインデックスを指定できない。
Qraftユーザーの成績:難易度 Dランク(レーティング1147)・正答率 56%(15/27回正解)
レーティングは解いた人の実力と正誤から算出する難しさ(初期値1200)。ランクはその全問題中の順位(S+が最難関、F-が最易)
正解と解説を見る
正解:インデックスを作成するとクエリの検索速度は向上するが、INSERT・UPDATE・DELETE処理は遅くなる可能性がある。
インデックスはデータベースの検索性能を向上させる重要な機能ですが、適切な使用が必要です。
インデックスを作成すると、SELECT・WHERE・JOIN・ORDER BY等の検索クエリが高速化されます。しかし、INSERT・UPDATE・DELETE実行時には、インデックス自体も更新する必要があるため、これらの処理はインデックスがない場合より遅くなります。
正しいのは「インデックスを作成するとクエリの検索速度は向上するが、INSERT・UPDATE・DELETE処理は遅くなる可能性がある」という内容です。
インデックスはディスク上に物理的に格納されるため、ディスク容量を消費します。複合インデックスの場合、WHERE句で指定する列の順序が重要です(最左プレフィックスルール)。すべての列にインデックスを作成すると、書き込み性能が著しく低下します。実務では選択性の高い列や検索で頻繁に使用される列に限定してインデックスを作成します。