業務でデータベースの操作をする場合、データが大量に登録されているテーブルへアクセスする場合に索引(INDEX)を作成するとSQLクエリの実行が劇的に早くなるケースが多々あります。この索引(INDEX)についてどういう場合に作成すれば良いのか、メリット、デメリット等についてまとめておきます。
どういう場合に索引(INDEX)を作成すれば良いのか
索引(INDEX)を作成した方が良いケース
- 項目数/データ数が多い大規模な表の1%~15%程の行を頻繁にアクセスする場合
- WHERE句で頻繁に使用されている列である場合
- 列の値が比較的一意である場合
- 参照整合性制約で使用されている外部キーになっている列である場合
索引(INDEX)を作成しない方が良いケース
- データ登録件数が少ない表である場合
- 列内の値がほぼユニークである場合
- NULL値が多く、NULL以外の値を検索しない場合
索引(INDEX)のメリット
- 表検索(SELCET)する際、特定の行を素早く検索する事が出来る為、検索のパフォーマンスが早くなります。
- ソート作業を省略出来ます。
索引(INDEX)のデメリット
- データの登録(INSERT)、変更(UPDATE)の際、索引変更のためのオーバーヘッドが加わるため、索引(INDEX)がないテーブルに比べると時間が掛かります。
- 索引(INDEX)を作成する領域が必要となります。