• @IT
  • @IT CORE
  • @IT情報マネジメント
  • @IT MONOist
  • @IT自分戦略研究所
  • ITmedia
  • TechTarget
  • 誠
  • EE Times
  • EDN Japan
アットマーク・アイティ ITエキスパートのための問題解決メディア
@IT総合トップ > @IT CORE > Database Expert > SQLチューニングのキモ データアクセスと索引(インデックス)の関係(1/2)
印刷
Tweet
このエントリーをはてなブックマークに追加

ゼロからのリレーショナルデータベース入門(5)

SQLチューニングのキモ
データアクセスと索引(インデックス)の関係

株式会社アシスト
支援統括部 教育部
小野 明洋
2009/1/29
データベース内部で行われる基本的なデータアクセス方法を説明します。具体的なSQLのチューニング技法に触れるわけではありませんが、SQLのチューニングを行う上で最も重要な基礎知識を解説します。

パフォーマンス向上とデータアクセス方法

 パフォーマンス問題を抱えているシステムの多くは、SQLによるデータアクセス方法に問題があります。もっと効率的なアクセス方法が使用できれば、SQLのパフォーマンスは格段に向上する可能性があります。このような問題は多くの場合、適切な索引(インデックス)を使えていないことによって発生しています。

 連載5回目となる今回は、データベース内部で行われる基本的なデータアクセス方法を説明します。具体的なSQLのチューニング技法に触れるわけではありませんが、SQLのチューニングを行ううえでの最も重要な基礎知識を解説します。

1.代表的なデータアクセス方法

 SQLは、表や列の名前を指定すれば簡単にデータにアクセスできる非常に便利な言語です。それゆえに、RDBMSには、そのSQLをどのように処理するか(どのようにデータにアクセスするか)を内部的に決定する機能が必要です。その機能は「オプティマイザ」と呼ばれ、RDBMSにとって、とても重要な役割を担っています。

 オプティマイザが選択するデータアクセス方法にはさまざまな種類がありますが、その中でも代表的なデータアクセス方法に「全表スキャン」と「索引スキャン」があります。それぞれのアクセス方法には特徴があります。

 OLTP(OnLine Transaction Processing、オンライントランザクション処理)系システムでは、いかに索引スキャンを上手に使用できるかが、パフォーマンスを向上させるうえでの重要なポイントとなります。

 それでは、この全表スキャンと索引スキャンの違い、特徴について解説します。

2.全表スキャン

 全表スキャンは、SQLで指定された表のすべてのデータにアクセスして、WHERE句の条件を満たす行を1行ずつチェックする方法です。例えば以下のSQLでは、EMP表の全行にアクセスし、「DEPTNO列が10」である行を探します(図1)。

SELECT ENAME FROM EMP WHERE DEPTNO = 10;
図1 全表スキャン

 このアクセス方法は全データにアクセスするため、DEPTNO列が10の行が全体の数行しかないような場合は非常に無駄が多く、効率的であるとはいえません。このようなケースは、後述する索引スキャンの方が適したアクセス方法です。

 しかし、全表スキャンは無駄なディスクI/Oを削減するために、表を構成しているデータブロック(第3回「データベースの論理構造ってどんなもの?」参照)を1回のI/Oでまとめてメモリ上に読み込むという特徴を持ちます。そのため、例えば前述のSQLで「DEPTNO列が10」であるデータが表全体の大部分を占めているような場合、結局はほとんどのデータにアクセスする必要があるので、まとめてブロックを読み込める全表スキャンは効率的なアクセス方法です(図2)。

図2 全表スキャンでのディスクI/O

1/2 次のページへ

Index
ゼロからのリレーショナルデータベース入門(5)
SQLチューニングのキモ データアクセスと索引(インデックス)の関係
→ Page 1
1.代表的なデータアクセス方法
2.全表スキャン

Page 2
3.索引スキャン
4.索引の注意事項
5.まとめ

ゼロからのリレーショナルデータベース入門

TechTargetジャパン

Database Expert フォーラム 新着記事
  • IBMが歴史を変える!? 新カテゴリの製品を発表 (2012/5/25)
     IBMは新たな製品カテゴリとなる「PureSystems」を発表。DB2 10とビッグデータの関係、PureSytemsの斬新さはどこかに迫ります
  • クラウド時代のデータ処理を支える分散KVSの可能性 (2012/5/23)
     現在、高速データ処理の主流はインメモリ型データ処理だが、別の方法として分散KVSが注目を集めている。今回は分散KVSについて話を聞いた
  • 複数の表からデータを取り出して表示させる(2) (2012/4/23)
     前回はSQLの基本的な結合構文について説明しました。今回は、より複雑な自己結合や外部結合について説明します
  • SQL Server、OOWにIQ、盛りだくさんの4月 (2012/4/20)
     オラクルオープンワールドが3年ぶりに東京で開催されたほか、SQL Server 2012が提供開始されるなど、今月は話題が盛りだくさんです

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

@IT 新着記事
  • 実録、「Hardening Zero」の舞台裏
  • 「ネットワーク仮想化」がもたらすもの
  • フォルダの名前が変更できない不具合を解消する
  • IBMが歴史を変える!? 新カテゴリの製品を発表
  • 「うわ…私の支出、高すぎ?」転職時に知るべき支出
  • 家電や身近なサービスへの応用が期待される技術
  • エンジニアは「仕事が全て」の生き物
  • 次のモバイルアプリはどのフレームワークで作る?
  • 通信相手のMACアドレスを調べる近隣探索プロトコル
  • フルスクラッチ開発はエンジニアのストレスを軽減する
  • ITリーダーは、“IT部門本来の使命”を実現せよ
  • 私たちがExcelをこれほど使う理由

キャリアアップ

Database Expert

スポンサーからのお知らせ

- PR -
@IT Sepcial
→ @IT Special ヘ

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

  • 1位いきなりリーダーになって四苦八苦。周囲…
  • 2位SEのための話のまとめ方・伝え方
  • 3位ゆとり世代を伸ばす部下管理術【夜コース】
  • 4位Android応用 WebAPI開発
  • 5位Android組み込み開発基礎
もっと見る
NewsInsight ヘッドライン
  • 運用に焦点を当てたセキュリティ競技大会「Hardening Zero」
  • OSS利活用を推進、BOSS-CON JAPANが設立へ
  • リソースはイーサネットの先に、NECがExpEtherを製品化
  • EMCがDropboxライクなサービスを買収、その目的は
  • コミュニティ活動に参加するエンジニアは10%未満―IPA調査
  • 「100GbpsでOpenFlow」、ブロケードがSDN推進戦略
  • Isilonは仮想化対応強化、EMCのミッドレンジ製品の明日
ニュース一覧へ→
- PR -

お勧め求人情報

転職/派遣情報を探す

エンジニアの求人情報、ただいま増加中 エンジニアの求人情報、ただいま増加中
【転職サーチ】SIer/Web企業/新規事業
スマホ開発で、あなたのキャリアを生かす

派遣エンジニアにお役立ちの仕事情報 派遣エンジニアにお役立ちの仕事情報
「派遣・フリーで働くメリット」とは?
活躍する派遣エンジニアの本音

エンジニアのキャリア実現を応援します

スキルアップ 〜@IT自分戦略研究所

  • ITトレメ 「ビジネス基礎」シリーズ開始
    「マナー&コミュニケーション編」「法律・知財・債権管理編」
**先週の人気講座ランキング**
〜 Android編 〜
  • 1位Androidアプリケーション開発入門【株式会社ナレッジエックス】
  • 2位Androidアプリケーション開発応用【株式会社カサレアル】
  • 3位Androidアプリケーション開発入門【株式会社カサレアル】

ホワイトペーパー(TechTargetジャパン)

@IT Sepcial
→ @IT Special ヘ
ソリューションFLASH

@ITトップ|Database Expertフォーラム トップ|会議室|利用規約|プライバシーポリシー|サイトマップ


Copyright(c) 2000-2012 ITmedia Inc.
著作権はアイティメディア株式会社またはその記事の筆者に属します。(著作権について)
当サイトに掲載されている記事や画像などの無断転載を禁止します。
「@IT」「@IT自分戦略研究所」「@IT情報マネジメント」「JOB@IT」「@ITハイブックス」「@IT MONOist」「ITmedia」「誠」は、アイティメディア株式会社の登録商標です。
当サイトに関するお問い合わせは「@ITへのお問い合わせ」をご覧ください。