技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

SQLのデータアクセス

OracleDBやMySQLなどのRDBMSは、どのようにデータにアクセス(SQLをどのように処理するか)するか、いくつか選択肢を持っています。
その中で代表的なのが「全表スキャン」と「索引スキャン」です。

全表スキャンは、SQLで指定された表のすべてのデータにアクセスし、SQLで指定された条件に合致する行を抽出します。
全表スキャンのメリットは、1度のディスクI/Oで大量のデータにアクセスできることです。バッチ操作などで大量データにアクセスする必要があるケースに適しています。

索引スキャンは、本の索引のイメージです。表の管理者が作成した索引を元に、特定の行に対してより速くアクセスすることを目的としています。
しかし、利用されない・効果の低い索引を無闇に指定するべきではありません。パフォーマンスの悪化を招きます。
索引は元の表とは別に作成される表であり、元の表に追加や索引に関係のある更新が行われれば、索引もあわせて更新する必要があります。
つまり元の表への更新処理のパフォーマンスを低下させるのです。指定しようとしている索引が必要かどうか事前によく検討し、効果測定も実施した上で、索引を決定する必要があります。

SQLチューニングの基礎知識 「データアクセスと索引(インデックス)」の関係を理解する (1/3):ゼロからのリレーショナルデータベース入門(5) - @IT