SQLチューニングの基礎知識 「データアクセスと索引(インデックス)」の関係を理解する:ゼロからのリレーショナルデータベース入門(5)(2/3 ページ)
索引スキャン(インデックススキャン)は、索引(さくいん)情報を使って、条件に該当するデータの場所を特定してから、表にアクセスする方法です。
書籍の巻末にある索引を思い浮かべてみてください。数百ページに及ぶ書籍から特定の情報を効率よく探したい場合には、索引から五十音順やアルファベット順に並んだキーワードを探せば、該当するページが簡単に分かります。
データベースにおける索引スキャンの目的や役割もこれと同じです。
例えば、社員名で検索を行う場合は、あらかじめ社員名の列に索引を作成します。索引では、必要な情報を短時間で見つけ出せるように、キーワードとなる列(ENAME列)の値が順に並べられ、列の値と行の位置情報がひも付けられています(図3)。
図3 ENAME列に作成した索引の構造
「BLAKE」さんの社員データを検索する場合、まず索引にアクセスして、BLAKEさんの行データが「EMP表のどこにあるのか」を割り出します。その後、この情報を基にEMP表にアクセスすることで、「BLAKE」さんの行データへピンポイントにアクセスできます。
図4 索引スキャンによるデータアクセス
このように、索引スキャンは表の一部のデータに効率よくアクセスできる特徴があります。その一方で、表の大部分のデータにアクセスする場合には不向きです。これも書籍の場合と同じです。ほとんどのページを読まなければならない場合は、索引を使わずに全てのページに目を通した方が早く読み終えることができるでしょう。
- SQLの基礎 「SELECT」文を覚えよう
- SQLとはどういう言語か
「SQLは何となく苦手」という人は意外と多いものです。すでに何らかのプログラミング言語を習得している人を見ても、SQLを苦手としている人は少なくありません。そこで、実際にSQLを入力して結果を見ながら学習する連載を始めます。用意するのはインターネットにつながったWebブラウザだけ。気軽に始めてみてください。(編集部)
- RDBMS製品のビッグ3、それぞれの“癖”をつかもう
本連載はOracleを使ったデータベースシステムの開発・運用管理にある程度の知識を持つ読者を対象に、Oracle以外の商用RDBMSであるMicrosoft SQL ServerとIBM DB2とのアーキテクチャの違いを明らかにし、マルチベンダに対応できるデータベースシステムの設計・開発・運用ノウハウを紹介していく。(編集局)
- NoSQLはRDBMSに取って代わるものなのか?
「memcached」や「Apache Cassandra」、「Apache CouchDB」など、RDBMSとは異なる考えで設計してあるデータベース管理システムが普及しつつあります。この連載では、これら新しいデータベース管理システムの特徴と、RDBMSとの使い分け方について解説します。(編集部)
Copyright © ITmedia, Inc. All Rights Reserved.