SlideShare a Scribd company logo
1 of 32
超入門!  
DataBase基礎の基礎
〜どうしてDBはデータを高速検索できるのか〜
2013/7/1
松澤	
 文明
今回は、DBがどうしてデータを
高速検索できるのかをテーマに
ざっくりと
検索の仕組みを解説します。
2
DBって難しい仕組み
で検索してるって思っていません?
3
DBを本に例えるなら
「DBからデータを取得すること」
は
「本から語句を調べること」
をイメージすればOKです。
4
まずは、
オプティマイザって知ってますか?
5
オプティマイゼーション:最適化
(optimization )
6
オプティマイザってDBにあって、
こいつが人間の命令を解析して
DBのデータを効率的に検索する
役割をしています。
7
オプティマイザは人間の命令を
受けて、「統計情報」という
データに関する情報を使って
データの検索方法を考えます。
8
そのオプティマイザの考えた
検索方法を、
9
実行計画
10
でも、ちゃんと指示して
あげないとデータを
一個一個調べていきます。
11
だから、その実行計画が良くないと
大量のデータ(分厚い本)は
調べるのに時間が掛かることも・・・
12
そして、
「DB遅せーよ!」
と言われるのです。
13
14
© カラー・GAINAX
人間は本から何か調べるとき、
本の後ろをみると索引があって、
それを使うと早く調べられますよね
15
ん・・・索引?
=インデックス!
16
でも、DBのインデックスって
なんだか
よくわからないですよね?
17
解説の前にちょっと前知識
ユニークID・・・
DB内でレコードを一意に識別し、
物理的に格納している位置を示すID
18
では、
インデックスってデータを見れない
表をイメージして下さい。
19
例えば、顧客名のインデックスは
20
ユニークID 顧客ID	
456781	
 A0001	
387907	
 A0002	
975578	
 B0002	
987656	
 C0001	
ユニークID 顧客ID	
 顧客名	
 ・・・	
 ・・・	
 項目	
456781	
 A0001	
 うの さぶろう	
 ・・・	
 ・・・	
 うううう	
387907	
 A0002	
 あいかわ たろう	
 ・・・	
 ・・・	
 あああ	
975578	
 B0002	
 いしい じろう	
 ・・・	
 ・・・	
 いいい	
987656	
 C0001	
 えのき はなこ	
 ・・・	
 ・・・	
 ええええ	
インデックス	
表
インデックスがないと表を
全部読みこんでから取得するので
大変!
21
ユニークID 顧客ID	
 顧客名	
 ・・・	
 ・・・	
 項目	
456781	
 A0001	
 うの さぶろう	
 ・・・	
 ・・・	
 うううう	
387907	
 A0002	
 あいかわ たろう	
 ・・・	
 ・・・	
 あああ	
975578	
 B0002	
 いしい じろう	
 ・・・	
 ・・・	
 いいい	
987656	
 C0001	
 えのき はなこ	
 ・・・	
 ・・・	
 ええええ	
表
なので、インデックスを使うと
22
ユニークID 顧客ID	
456781	
 A0001	
387907	
 A0002	
975578	
 B0002	
987656	
 C0001	
ユニークID 顧客ID	
 顧客名	
 ・・・	
 ・・・	
 項目	
456781	
 A0001	
 うの さぶろう	
 ・・・	
 ・・・	
 うううう	
387907	
 A0002	
 あいかわ たろう	
 ・・・	
 ・・・	
 あああ	
975578	
 B0002	
 いしい じろう	
 ・・・	
 ・・・	
 いいい	
987656	
 C0001	
 えのき はなこ	
 ・・・	
 ・・・	
 ええええ	
表	
インデックス
でも、いいことばかりじゃないです
23
インデックスがいっぱいあると・・・
24
ユニークID 顧客ID	
 顧客名	
 ・・・	
 ・・・	
 項目	
456781	
 A0001	
 うの さぶろう	
 ・・・	
 ・・・	
 うううう	
387907	
 A0002	
 あいかわ たろう	
 ・・・	
 ・・・	
 あああ	
975578	
 B0002	
 いしい じろう	
 ・・・	
 ・・・	
 いいい	
999999	
 D0001	
 おの あきこ	
 ・・・	
 ・・・	
 おおお	
X
X
X	
X	
X	
X	
X	
X	
X	
X	
更新のときに、インデックスにも更新が必要なので、処理時間が増加する。
B-木インデックス
NULLをインデックスにすることができない。
25
あ〜と	
 な〜よ	
 ら〜ん	
あ〜お	
 か〜こ	
 さ〜そ	
 な〜の	
 ・・・	
 や〜よ
あ	
 ・・・	
 お	
ID	
 ・・・	
 ID
ビットマップインデックス
NULLをインデックスにすることができる。
26
ユニークID 顧客区分
  =“個人”	
顧客区分
  =“法人”	
性別=“男性”	
 性別=“女性”	
275438	
 0	
 1	
 0	
 0	
975578	
 1	
 0	
 1	
 0	
456781	
 1	
 0	
 1	
 0	
987656	
 1	
 0	
 0	
 1
こんな仕組みで検索するので、
インデックスはソートされている
必要があります。
27
コンピュータの仕組みと同じで
データの追加/更新を頻繁にする
とインデックスもDB内の
保存場所が断片化の様な状態
になります。
28
だから、
デフラグ=再編成(再構築)
を時々して解消します。
29
インデックスのメンテナンスも
検索スピードを高速に保つには
重要な要素となります。
30
こんな仕組みで
DBはデータを高速検索するのです。
31
おわり
32

More Related Content

What's hot

データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)
データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)
データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)Takeshi Mikami
 
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
商用DBからPostgreSQLへ まず知っておいて欲しいまとめKosuke Kida
 
データ分析基盤運⽤チームの 運⽤業務を改善してみた話
データ分析基盤運⽤チームの 運⽤業務を改善してみた話データ分析基盤運⽤チームの 運⽤業務を改善してみた話
データ分析基盤運⽤チームの 運⽤業務を改善してみた話Recruit Lifestyle Co., Ltd.
 
データベースシステム論02 - データベースの歴史と今
データベースシステム論02 - データベースの歴史と今データベースシステム論02 - データベースの歴史と今
データベースシステム論02 - データベースの歴史と今Shohei Yokoyama
 
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)moai kids
 
これからはNo sqlの時代って本当ですか
これからはNo sqlの時代って本当ですかこれからはNo sqlの時代って本当ですか
これからはNo sqlの時代って本当ですかyumi_chappy
 
PHPとMongoDBで学ぶ次世代データストア
PHPとMongoDBで学ぶ次世代データストアPHPとMongoDBで学ぶ次世代データストア
PHPとMongoDBで学ぶ次世代データストアTakuya Sato
 
JavaOne2013報告会 LT資料 Hadoopの話を聞いてきた
JavaOne2013報告会 LT資料 Hadoopの話を聞いてきたJavaOne2013報告会 LT資料 Hadoopの話を聞いてきた
JavaOne2013報告会 LT資料 Hadoopの話を聞いてきたTakashi Aoe
 
トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)Takahiro Inoue
 
データベースシステム論06 - SQL基礎演習1 データの定義と操作
データベースシステム論06 - SQL基礎演習1 データの定義と操作データベースシステム論06 - SQL基礎演習1 データの定義と操作
データベースシステム論06 - SQL基礎演習1 データの定義と操作Shohei Yokoyama
 
経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめ経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめYasushi Hara
 
データベース13 - トランザクションと障害回復
データベース13 - トランザクションと障害回復データベース13 - トランザクションと障害回復
データベース13 - トランザクションと障害回復Kenta Oku
 
Japan.r 2データベース
Japan.r 2データベースJapan.r 2データベース
Japan.r 2データベースsleipnir002
 
データ集計基盤のいままでとこれから 〜Hadoopからdataflowまで使い込んだ経験を徹底共有〜
データ集計基盤のいままでとこれから 〜Hadoopからdataflowまで使い込んだ経験を徹底共有〜データ集計基盤のいままでとこれから 〜Hadoopからdataflowまで使い込んだ経験を徹底共有〜
データ集計基盤のいままでとこれから 〜Hadoopからdataflowまで使い込んだ経験を徹底共有〜Kazuhiro Mitsuhashi
 
企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案Toshiyuki Shimono
 
Macで開発環境を整える170420
Macで開発環境を整える170420Macで開発環境を整える170420
Macで開発環境を整える170420Toshiyuki Shimono
 
データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成Shohei Yokoyama
 
実務で役立つデータベースの活用法
実務で役立つデータベースの活用法実務で役立つデータベースの活用法
実務で役立つデータベースの活用法Soudai Sone
 

What's hot (20)

データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)
データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)
データウェアハウス入門 (マーケティングデータ分析基盤技術勉強会)
 
Hadoop 基礎
Hadoop 基礎Hadoop 基礎
Hadoop 基礎
 
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
 
データ分析基盤運⽤チームの 運⽤業務を改善してみた話
データ分析基盤運⽤チームの 運⽤業務を改善してみた話データ分析基盤運⽤チームの 運⽤業務を改善してみた話
データ分析基盤運⽤チームの 運⽤業務を改善してみた話
 
データベースシステム論02 - データベースの歴史と今
データベースシステム論02 - データベースの歴史と今データベースシステム論02 - データベースの歴史と今
データベースシステム論02 - データベースの歴史と今
 
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
 
これからはNo sqlの時代って本当ですか
これからはNo sqlの時代って本当ですかこれからはNo sqlの時代って本当ですか
これからはNo sqlの時代って本当ですか
 
PHPとMongoDBで学ぶ次世代データストア
PHPとMongoDBで学ぶ次世代データストアPHPとMongoDBで学ぶ次世代データストア
PHPとMongoDBで学ぶ次世代データストア
 
JavaOne2013報告会 LT資料 Hadoopの話を聞いてきた
JavaOne2013報告会 LT資料 Hadoopの話を聞いてきたJavaOne2013報告会 LT資料 Hadoopの話を聞いてきた
JavaOne2013報告会 LT資料 Hadoopの話を聞いてきた
 
トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)トレジャーデータ株式会社について(for all Data_Enthusiast!!)
トレジャーデータ株式会社について(for all Data_Enthusiast!!)
 
データベースシステム論06 - SQL基礎演習1 データの定義と操作
データベースシステム論06 - SQL基礎演習1 データの定義と操作データベースシステム論06 - SQL基礎演習1 データの定義と操作
データベースシステム論06 - SQL基礎演習1 データの定義と操作
 
経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめ経済学のための実践的データ分析 4.SQL ことはじめ
経済学のための実践的データ分析 4.SQL ことはじめ
 
WiredTigerを詳しく説明
WiredTigerを詳しく説明WiredTigerを詳しく説明
WiredTigerを詳しく説明
 
データベース13 - トランザクションと障害回復
データベース13 - トランザクションと障害回復データベース13 - トランザクションと障害回復
データベース13 - トランザクションと障害回復
 
Japan.r 2データベース
Japan.r 2データベースJapan.r 2データベース
Japan.r 2データベース
 
データ集計基盤のいままでとこれから 〜Hadoopからdataflowまで使い込んだ経験を徹底共有〜
データ集計基盤のいままでとこれから 〜Hadoopからdataflowまで使い込んだ経験を徹底共有〜データ集計基盤のいままでとこれから 〜Hadoopからdataflowまで使い込んだ経験を徹底共有〜
データ集計基盤のいままでとこれから 〜Hadoopからdataflowまで使い込んだ経験を徹底共有〜
 
企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案企業等に蓄積されたデータを分析するための処理機能の提案
企業等に蓄積されたデータを分析するための処理機能の提案
 
Macで開発環境を整える170420
Macで開発環境を整える170420Macで開発環境を整える170420
Macで開発環境を整える170420
 
データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成
 
実務で役立つデータベースの活用法
実務で役立つデータベースの活用法実務で役立つデータベースの活用法
実務で役立つデータベースの活用法
 

Similar to 超入門データベース基礎の基礎

ビジネスサイドが知っておくべきアプリケーションのデータ分析の話
ビジネスサイドが知っておくべきアプリケーションのデータ分析の話ビジネスサイドが知っておくべきアプリケーションのデータ分析の話
ビジネスサイドが知っておくべきアプリケーションのデータ分析の話Koyo 松本
 
20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fs20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fsTakahiro Iwase
 
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』Insight Technology, Inc.
 
実はとても面白い...Documentation library
実はとても面白い...Documentation library実はとても面白い...Documentation library
実はとても面白い...Documentation libraryKouta Shiobara
 
Rとデータベース 第61回 Tokyo.R
Rとデータベース 第61回 Tokyo.RRとデータベース 第61回 Tokyo.R
Rとデータベース 第61回 Tokyo.RTakashi Minoda
 
ビジネスインテリジェンス入門~OSSでBIを始めよう~version2(公開版)
ビジネスインテリジェンス入門~OSSでBIを始めよう~version2(公開版)ビジネスインテリジェンス入門~OSSでBIを始めよう~version2(公開版)
ビジネスインテリジェンス入門~OSSでBIを始めよう~version2(公開版)Kensuke SAEKI
 
【社内LT】DBとは
【社内LT】DBとは【社内LT】DBとは
【社内LT】DBとはVitalify.Inc
 

Similar to 超入門データベース基礎の基礎 (7)

ビジネスサイドが知っておくべきアプリケーションのデータ分析の話
ビジネスサイドが知っておくべきアプリケーションのデータ分析の話ビジネスサイドが知っておくべきアプリケーションのデータ分析の話
ビジネスサイドが知っておくべきアプリケーションのデータ分析の話
 
20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fs20151205 中国地方db勉強会 dbm_fs
20151205 中国地方db勉強会 dbm_fs
 
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
 
実はとても面白い...Documentation library
実はとても面白い...Documentation library実はとても面白い...Documentation library
実はとても面白い...Documentation library
 
Rとデータベース 第61回 Tokyo.R
Rとデータベース 第61回 Tokyo.RRとデータベース 第61回 Tokyo.R
Rとデータベース 第61回 Tokyo.R
 
ビジネスインテリジェンス入門~OSSでBIを始めよう~version2(公開版)
ビジネスインテリジェンス入門~OSSでBIを始めよう~version2(公開版)ビジネスインテリジェンス入門~OSSでBIを始めよう~version2(公開版)
ビジネスインテリジェンス入門~OSSでBIを始めよう~version2(公開版)
 
【社内LT】DBとは
【社内LT】DBとは【社内LT】DBとは
【社内LT】DBとは
 

超入門データベース基礎の基礎