SlideShare a Scribd company logo
インデックスのおはなし

       @hajikami


       2013/02/16 俺聞け4
目次                                     2

1.自己紹介
2.このセッションについて
3.データベースってなに?
4.インデックスってなに?
5.インデックスをメンテナンスしよう!
6.まとめ



2013/02/16   インデックスのおはなし   @hajikami
自己紹介                                                                  3
●   @hajikami
    ●   基幹業務系プログラマ
        –    SIer に勤務
        –    業務: C, C#, etc...
        –    好きな言語:
                PHP, Python, Haskell, Scala
                English, français, italiano, 國語, etc...




2013/02/16                    インデックスのおはなし                 @hajikami
このセッションについて                                  4




                 このセッションでは
             データベースのインデックスについて
               基礎的な知識をお話しします




2013/02/16         インデックスのおはなし   @hajikami
このセッションについて                            5




このセッションでは「データベース(DB)」という言葉を
 「関係データベース管理システム(RDBMS)」と
        同じ意味で用います




2013/02/16   インデックスのおはなし   @hajikami
このセッションの楽しみ方                                     6
●   IT 開発・保守・運用をされない方
    ●   データベースとは何か、のんびりと聞いてみてください

●   DBをちょっと使うけど、インデックスはどうもよくわからない方
    ●   インデックスのメリット・デメリットについてお話します

●   なぜインデックスのメンテナンスが必要かよくわからない方
    ●   インデックスメンテナンスのイメージについてお話します

●   上記をすべて理解する方
    ●   おいしいお菓子をお召し上がり下さい

2013/02/16          インデックスのおはなし      @hajikami
データベースってなに?                                 7




             データを保存・管理するものです




2013/02/16        インデックスのおはなし   @hajikami
データベースってなに?                                8
●   システムは大きく「データ」と「処理」に分けられます
●   データ: データベースが主担当
    ●   投稿文章
    ●   写真
    ●   コメント
●   処理: アプリケーションが主担当
    ●   投稿文章を表示する
    ●   投稿文章に紐づく写真・コメントを表示する


2013/02/16      インデックスのおはなし    @hajikami
データベースってなに?                                                     9


例: SNS で投稿を見る

                投稿                     投稿のデータ
                見せて!                   ちょうだい!




                見やすく                    はい!
                しといたよ!                  これだよ!
         パソコン            アプリケーション               データベース




2013/02/16               インデックスのおはなし                @hajikami
まとめ                                         10




                 データベースとは
             データを保存・管理するものです




2013/02/16        インデックスのおはなし   @hajikami
インデックスってなに?                              11




        データを見つけやすくするためのものです




2013/02/16     インデックスのおはなし   @hajikami
インデックスってなに?                                12
●   データを見つけやすくするためのもの
●   日本語では索引

●   「インデックス」「索引」
    ●   バインダーにファイルを綴るときに貼るもの
    ●   本の末尾に付いているキーワード一覧

        これらがあれば探しやすいですよね!


2013/02/16       インデックスのおはなし   @hajikami
インデックスのメリット                                13
●   データを見つけるのが早くなります!

●   例:
    建造物について書かれた500ページの本から
    「サグラダ・ファミリア」について
    書かれたページを見つける
    ●   建造物名「アイウエオ」索引あり: サの項目を調べる
    ●   索引なし: 全建造物名を調べる



2013/02/16       インデックスのおはなし   @hajikami
インデックスが使えないこともある                          14
●   例えば、後方一致検索では使えません

●   例:
    建造物について書かれた500ページの本から
    「(なんとか)ファミリア」について書かれた
    ページを見つける
    ●   建造物名「アイウエオ」索引あり:
        →建造物名の末尾しかわからないので索引が使えない
        →全建造物名を調べる


2013/02/16      インデックスのおはなし   @hajikami
インデックスのデメリット                                 15
●   データを変えるのが遅くなります
    ●   新しくインデックスを作るときは計画的に!
●   例:
    建造物について書かれた500ページの本に
    「落水荘」について書かれたページを追加する
    ●   建造物名「アイウエオ」索引: 落水荘 追加
    ●   設計者「アイウエオ」索引: フランク・ロイド・ライト 追加
    ●   所在地「アイウエオ」索引: アメリカ 追加
        :

2013/02/16        インデックスのおはなし    @hajikami
まとめ                                            16




              インデックスとは
        データを見つけやすくするためのものです

              ただし、インデックスを多く作成すると
             データを入れるときに時間がかかります




2013/02/16          インデックスのおはなし    @hajikami
インデックスをメンテナンスしよう!                      17




     どうやってインデックスをメンテナンスするの?
      インデックスのメンテナンスはなぜ必要?




2013/02/16   インデックスのおはなし   @hajikami
インデックスのメンテナンス方法                                               18
●   以下の命令により、インデックスを再構築します
    ●   MySQL
        –    OPTIMIZE TABLE テーブル名
    ●   PostgreSQL
        –    REINDEX INDEX インデックス名 等
    ●   Oracle
        –    ALTER INDEX インデックス名 REBUILD
        –    ALTER INDEX インデックス名 COALESCE (簡易メンテナンス)


        ※検索・更新に大きな影響が出るため、
         メンテナンス時はシステムを止めて実施しましょう
         (回避策がある場合もあります)
2013/02/16                 インデックスのおはなし            @hajikami
インデックスのイメージ                             19




     一般に B-Tree インデックスが使われています
       B-Tree を図示することができますか?




2013/02/16    インデックスのおはなし   @hajikami
インデックスのイメージ                                                20
●   一般に B-Tree インデックスが使用されています
    ●   B-Tree のイメージ

                            D H L


             A B C   E F G      I J K   MN O
             Dより前    D以降        H以降     L以降
                     Hより前       Lより前




2013/02/16              インデックスのおはなし            @hajikami
インデックスのイメージ                                                        21
●   一般に B-Tree インデックスが使用されています
    ●   同じデータの B-Tree でも…

                               B I L


             A          D F H      J K         O
             Bより前       B以降        H以降           L以降
                        Iより前       Lより前

    C            E         G              MN
    Dより前         D以降       F以降            Oより前
                 Fより前      Hより前

2013/02/16                 インデックスのおはなし                 @hajikami
インデックスのメンテナンスとは                                            22
●   B-Tree をこの状態に近づけること
    ●   綺麗なインデックスは、検索も早い

                            D H L


             A B C   E F G      I J K   MN O
             Dより前    D以降        H以降     L以降
                     Hより前       Lより前




2013/02/16              インデックスのおはなし            @hajikami
全まとめ                                       23

●   データベースはメンテナンスが必要です
    ●   使っているうちにゴチャゴチャしてくる
    ●   作りっぱなしはダメ、絶対

●   インデックスのご利用は計画的に
    ●   検索は早くなるけど、更新が遅くなる
    ●   インデックスが使えない検索もある
    ●   (本セッションでは触れなかったが、)
        インデックスを使ったほうが検索が遅くなるケースもある
2013/02/16       インデックスのおはなし   @hajikami
おすすめ書籍                                          24
●   達人に学ぶ SQL徹底指南書
●   達人に学ぶDB設計 徹底指南書
    ●   SQL, RDBMSの基礎知識を解説している

●   Webエンジニアのための データベース技術[実践]入門
    ●   超入門から運用事例まで Mobage を例に解説している


●   44のアンチパターンに学ぶDBシステム
    ●   DBに関するアンチパターンとその改善のためのヒント
        (組織の改善を含む)について解説している
2013/02/16         インデックスのおはなし      @hajikami
終わり                                       25




             ありがとうございました!




2013/02/16      インデックスのおはなし   @hajikami

More Related Content

What's hot

LODを使ってみよう!
LODを使ってみよう!LODを使ってみよう!
LODを使ってみよう!
uedayou
 
WebGISやデータ公開について
WebGISやデータ公開についてWebGISやデータ公開について
WebGISやデータ公開について
IWASAKI NOBUSUKE
 
情報の構造化@Linked Open Data連続講座(2014.6.2)
情報の構造化@Linked Open Data連続講座(2014.6.2)情報の構造化@Linked Open Data連続講座(2014.6.2)
情報の構造化@Linked Open Data連続講座(2014.6.2)Ikki Ohmukai
 
オンプレとクラウドのHadoopを比較して僕の思うとこ
オンプレとクラウドのHadoopを比較して僕の思うとこオンプレとクラウドのHadoopを比較して僕の思うとこ
オンプレとクラウドのHadoopを比較して僕の思うとこ
Yu Yamada
 
5つ星の道は遠い
5つ星の道は遠い5つ星の道は遠い
5つ星の道は遠い
Masashi MATSUI
 
Rとデータベース 第61回 Tokyo.R
Rとデータベース 第61回 Tokyo.RRとデータベース 第61回 Tokyo.R
Rとデータベース 第61回 Tokyo.R
Takashi Minoda
 
LOD連続講義 第5回「LODの作り方・使い方」
LOD連続講義 第5回「LODの作り方・使い方」LOD連続講義 第5回「LODの作り方・使い方」
LOD連続講義 第5回「LODの作り方・使い方」
Fuyuko Matsumura
 
dplyrとは何だったのか
dplyrとは何だったのかdplyrとは何だったのか
dplyrとは何だったのか
yutannihilation
 

What's hot (8)

LODを使ってみよう!
LODを使ってみよう!LODを使ってみよう!
LODを使ってみよう!
 
WebGISやデータ公開について
WebGISやデータ公開についてWebGISやデータ公開について
WebGISやデータ公開について
 
情報の構造化@Linked Open Data連続講座(2014.6.2)
情報の構造化@Linked Open Data連続講座(2014.6.2)情報の構造化@Linked Open Data連続講座(2014.6.2)
情報の構造化@Linked Open Data連続講座(2014.6.2)
 
オンプレとクラウドのHadoopを比較して僕の思うとこ
オンプレとクラウドのHadoopを比較して僕の思うとこオンプレとクラウドのHadoopを比較して僕の思うとこ
オンプレとクラウドのHadoopを比較して僕の思うとこ
 
5つ星の道は遠い
5つ星の道は遠い5つ星の道は遠い
5つ星の道は遠い
 
Rとデータベース 第61回 Tokyo.R
Rとデータベース 第61回 Tokyo.RRとデータベース 第61回 Tokyo.R
Rとデータベース 第61回 Tokyo.R
 
LOD連続講義 第5回「LODの作り方・使い方」
LOD連続講義 第5回「LODの作り方・使い方」LOD連続講義 第5回「LODの作り方・使い方」
LOD連続講義 第5回「LODの作り方・使い方」
 
dplyrとは何だったのか
dplyrとは何だったのかdplyrとは何だったのか
dplyrとは何だったのか
 

Viewers also liked

これまでの日本語の話をしよう
これまでの日本語の話をしようこれまでの日本語の話をしよう
これまでの日本語の話をしよう
hajikami
 
いまどきのPHP
いまどきのPHPいまどきのPHP
いまどきのPHP
Masashi Shinbara
 
データベース14 - データベース構造とインデックス
データベース14 - データベース構造とインデックスデータベース14 - データベース構造とインデックス
データベース14 - データベース構造とインデックス
Kenta Oku
 
Mongo dbを知ろう
Mongo dbを知ろうMongo dbを知ろう
Mongo dbを知ろうCROOZ, inc.
 
MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜
Naruhiko Ogasawara
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
 

Viewers also liked (6)

これまでの日本語の話をしよう
これまでの日本語の話をしようこれまでの日本語の話をしよう
これまでの日本語の話をしよう
 
いまどきのPHP
いまどきのPHPいまどきのPHP
いまどきのPHP
 
データベース14 - データベース構造とインデックス
データベース14 - データベース構造とインデックスデータベース14 - データベース構造とインデックス
データベース14 - データベース構造とインデックス
 
Mongo dbを知ろう
Mongo dbを知ろうMongo dbを知ろう
Mongo dbを知ろう
 
MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 

Similar to インデックスのおはなし

20131214 cocoa関西勉強会
20131214 cocoa関西勉強会20131214 cocoa関西勉強会
20131214 cocoa関西勉強会
Yosuke Uno
 
「Linked dataとLinked Open Data」アート・ドキュメンテーション学会
「Linked dataとLinked Open Data」アート・ドキュメンテーション学会「Linked dataとLinked Open Data」アート・ドキュメンテーション学会
「Linked dataとLinked Open Data」アート・ドキュメンテーション学会
KAMURA
 
実はとても面白い...Documentation library
実はとても面白い...Documentation library実はとても面白い...Documentation library
実はとても面白い...Documentation library
Kouta Shiobara
 
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
sleepy_yoshi
 
140201josoken linkeddata
140201josoken linkeddata140201josoken linkeddata
140201josoken linkeddataItsumi Komura
 
今から始めるDocument db
今から始めるDocument db今から始めるDocument db
今から始めるDocument db
Kazunori Hamamoto
 
実務で役立つデータベースの活用法
実務で役立つデータベースの活用法実務で役立つデータベースの活用法
実務で役立つデータベースの活用法
Soudai Sone
 
Mongo db勉強会
Mongo db勉強会Mongo db勉強会
Mongo db勉強会
otmb
 
[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.
 

Similar to インデックスのおはなし (9)

20131214 cocoa関西勉強会
20131214 cocoa関西勉強会20131214 cocoa関西勉強会
20131214 cocoa関西勉強会
 
「Linked dataとLinked Open Data」アート・ドキュメンテーション学会
「Linked dataとLinked Open Data」アート・ドキュメンテーション学会「Linked dataとLinked Open Data」アート・ドキュメンテーション学会
「Linked dataとLinked Open Data」アート・ドキュメンテーション学会
 
実はとても面白い...Documentation library
実はとても面白い...Documentation library実はとても面白い...Documentation library
実はとても面白い...Documentation library
 
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
 
140201josoken linkeddata
140201josoken linkeddata140201josoken linkeddata
140201josoken linkeddata
 
今から始めるDocument db
今から始めるDocument db今から始めるDocument db
今から始めるDocument db
 
実務で役立つデータベースの活用法
実務で役立つデータベースの活用法実務で役立つデータベースの活用法
実務で役立つデータベースの活用法
 
Mongo db勉強会
Mongo db勉強会Mongo db勉強会
Mongo 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間データリアルタイム連携』
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
 

More from hajikami

関数型を盲信するその前に
関数型を盲信するその前に関数型を盲信するその前に
関数型を盲信するその前に
hajikami
 
ふつうの人こそ、ちょっと発表してみたらいいと思う
ふつうの人こそ、ちょっと発表してみたらいいと思うふつうの人こそ、ちょっと発表してみたらいいと思う
ふつうの人こそ、ちょっと発表してみたらいいと思う
hajikami
 
サラリーマンプログラマと2つ目の武器
サラリーマンプログラマと2つ目の武器サラリーマンプログラマと2つ目の武器
サラリーマンプログラマと2つ目の武器
hajikami
 
言語交換SNS Lang-8 で8ヶ月間外国語を書き続けてみた
言語交換SNS Lang-8 で8ヶ月間外国語を書き続けてみた言語交換SNS Lang-8 で8ヶ月間外国語を書き続けてみた
言語交換SNS Lang-8 で8ヶ月間外国語を書き続けてみた
hajikami
 
How To Enjoy Lang-8
How To Enjoy Lang-8How To Enjoy Lang-8
How To Enjoy Lang-8hajikami
 
言語交換SNS Lang-8 で4ヶ月間英語を書き続けてみた(Web公開版)
言語交換SNS Lang-8 で4ヶ月間英語を書き続けてみた(Web公開版)言語交換SNS Lang-8 で4ヶ月間英語を書き続けてみた(Web公開版)
言語交換SNS Lang-8 で4ヶ月間英語を書き続けてみた(Web公開版)
hajikami
 
Nom de fonction français
Nom de fonction françaisNom de fonction français
Nom de fonction français
hajikami
 
わかるようにする
わかるようにするわかるようにする
わかるようにするhajikami
 
PHP5技術者認定初級試験を受験しました
PHP5技術者認定初級試験を受験しましたPHP5技術者認定初級試験を受験しました
PHP5技術者認定初級試験を受験しました
hajikami
 
プレゼンの方法(ただし5分に限る) web公開版
プレゼンの方法(ただし5分に限る) web公開版プレゼンの方法(ただし5分に限る) web公開版
プレゼンの方法(ただし5分に限る) web公開版hajikami
 
魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)
hajikami
 
5分でわかるPHPのクロージャ(web公開版)
5分でわかるPHPのクロージャ(web公開版)5分でわかるPHPのクロージャ(web公開版)
5分でわかるPHPのクロージャ(web公開版)
hajikami
 

More from hajikami (12)

関数型を盲信するその前に
関数型を盲信するその前に関数型を盲信するその前に
関数型を盲信するその前に
 
ふつうの人こそ、ちょっと発表してみたらいいと思う
ふつうの人こそ、ちょっと発表してみたらいいと思うふつうの人こそ、ちょっと発表してみたらいいと思う
ふつうの人こそ、ちょっと発表してみたらいいと思う
 
サラリーマンプログラマと2つ目の武器
サラリーマンプログラマと2つ目の武器サラリーマンプログラマと2つ目の武器
サラリーマンプログラマと2つ目の武器
 
言語交換SNS Lang-8 で8ヶ月間外国語を書き続けてみた
言語交換SNS Lang-8 で8ヶ月間外国語を書き続けてみた言語交換SNS Lang-8 で8ヶ月間外国語を書き続けてみた
言語交換SNS Lang-8 で8ヶ月間外国語を書き続けてみた
 
How To Enjoy Lang-8
How To Enjoy Lang-8How To Enjoy Lang-8
How To Enjoy Lang-8
 
言語交換SNS Lang-8 で4ヶ月間英語を書き続けてみた(Web公開版)
言語交換SNS Lang-8 で4ヶ月間英語を書き続けてみた(Web公開版)言語交換SNS Lang-8 で4ヶ月間英語を書き続けてみた(Web公開版)
言語交換SNS Lang-8 で4ヶ月間英語を書き続けてみた(Web公開版)
 
Nom de fonction français
Nom de fonction françaisNom de fonction français
Nom de fonction français
 
わかるようにする
わかるようにするわかるようにする
わかるようにする
 
PHP5技術者認定初級試験を受験しました
PHP5技術者認定初級試験を受験しましたPHP5技術者認定初級試験を受験しました
PHP5技術者認定初級試験を受験しました
 
プレゼンの方法(ただし5分に限る) web公開版
プレゼンの方法(ただし5分に限る) web公開版プレゼンの方法(ただし5分に限る) web公開版
プレゼンの方法(ただし5分に限る) web公開版
 
魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)魔法を使わないプログラミング(web公開版)
魔法を使わないプログラミング(web公開版)
 
5分でわかるPHPのクロージャ(web公開版)
5分でわかるPHPのクロージャ(web公開版)5分でわかるPHPのクロージャ(web公開版)
5分でわかるPHPのクロージャ(web公開版)
 

インデックスのおはなし

  • 1. インデックスのおはなし @hajikami 2013/02/16 俺聞け4
  • 2. 目次 2 1.自己紹介 2.このセッションについて 3.データベースってなに? 4.インデックスってなに? 5.インデックスをメンテナンスしよう! 6.まとめ 2013/02/16 インデックスのおはなし @hajikami
  • 3. 自己紹介 3 ● @hajikami ● 基幹業務系プログラマ – SIer に勤務 – 業務: C, C#, etc... – 好きな言語: PHP, Python, Haskell, Scala English, français, italiano, 國語, etc... 2013/02/16 インデックスのおはなし @hajikami
  • 4. このセッションについて 4 このセッションでは データベースのインデックスについて 基礎的な知識をお話しします 2013/02/16 インデックスのおはなし @hajikami
  • 5. このセッションについて 5 このセッションでは「データベース(DB)」という言葉を 「関係データベース管理システム(RDBMS)」と 同じ意味で用います 2013/02/16 インデックスのおはなし @hajikami
  • 6. このセッションの楽しみ方 6 ● IT 開発・保守・運用をされない方 ● データベースとは何か、のんびりと聞いてみてください ● DBをちょっと使うけど、インデックスはどうもよくわからない方 ● インデックスのメリット・デメリットについてお話します ● なぜインデックスのメンテナンスが必要かよくわからない方 ● インデックスメンテナンスのイメージについてお話します ● 上記をすべて理解する方 ● おいしいお菓子をお召し上がり下さい 2013/02/16 インデックスのおはなし @hajikami
  • 7. データベースってなに? 7 データを保存・管理するものです 2013/02/16 インデックスのおはなし @hajikami
  • 8. データベースってなに? 8 ● システムは大きく「データ」と「処理」に分けられます ● データ: データベースが主担当 ● 投稿文章 ● 写真 ● コメント ● 処理: アプリケーションが主担当 ● 投稿文章を表示する ● 投稿文章に紐づく写真・コメントを表示する 2013/02/16 インデックスのおはなし @hajikami
  • 9. データベースってなに? 9 例: SNS で投稿を見る 投稿 投稿のデータ 見せて! ちょうだい! 見やすく はい! しといたよ! これだよ! パソコン アプリケーション データベース 2013/02/16 インデックスのおはなし @hajikami
  • 10. まとめ 10 データベースとは データを保存・管理するものです 2013/02/16 インデックスのおはなし @hajikami
  • 11. インデックスってなに? 11 データを見つけやすくするためのものです 2013/02/16 インデックスのおはなし @hajikami
  • 12. インデックスってなに? 12 ● データを見つけやすくするためのもの ● 日本語では索引 ● 「インデックス」「索引」 ● バインダーにファイルを綴るときに貼るもの ● 本の末尾に付いているキーワード一覧 これらがあれば探しやすいですよね! 2013/02/16 インデックスのおはなし @hajikami
  • 13. インデックスのメリット 13 ● データを見つけるのが早くなります! ● 例: 建造物について書かれた500ページの本から 「サグラダ・ファミリア」について 書かれたページを見つける ● 建造物名「アイウエオ」索引あり: サの項目を調べる ● 索引なし: 全建造物名を調べる 2013/02/16 インデックスのおはなし @hajikami
  • 14. インデックスが使えないこともある 14 ● 例えば、後方一致検索では使えません ● 例: 建造物について書かれた500ページの本から 「(なんとか)ファミリア」について書かれた ページを見つける ● 建造物名「アイウエオ」索引あり: →建造物名の末尾しかわからないので索引が使えない →全建造物名を調べる 2013/02/16 インデックスのおはなし @hajikami
  • 15. インデックスのデメリット 15 ● データを変えるのが遅くなります ● 新しくインデックスを作るときは計画的に! ● 例: 建造物について書かれた500ページの本に 「落水荘」について書かれたページを追加する ● 建造物名「アイウエオ」索引: 落水荘 追加 ● 設計者「アイウエオ」索引: フランク・ロイド・ライト 追加 ● 所在地「アイウエオ」索引: アメリカ 追加 : 2013/02/16 インデックスのおはなし @hajikami
  • 16. まとめ 16 インデックスとは データを見つけやすくするためのものです ただし、インデックスを多く作成すると データを入れるときに時間がかかります 2013/02/16 インデックスのおはなし @hajikami
  • 17. インデックスをメンテナンスしよう! 17 どうやってインデックスをメンテナンスするの? インデックスのメンテナンスはなぜ必要? 2013/02/16 インデックスのおはなし @hajikami
  • 18. インデックスのメンテナンス方法 18 ● 以下の命令により、インデックスを再構築します ● MySQL – OPTIMIZE TABLE テーブル名 ● PostgreSQL – REINDEX INDEX インデックス名 等 ● Oracle – ALTER INDEX インデックス名 REBUILD – ALTER INDEX インデックス名 COALESCE (簡易メンテナンス) ※検索・更新に大きな影響が出るため、  メンテナンス時はシステムを止めて実施しましょう  (回避策がある場合もあります) 2013/02/16 インデックスのおはなし @hajikami
  • 19. インデックスのイメージ 19 一般に B-Tree インデックスが使われています B-Tree を図示することができますか? 2013/02/16 インデックスのおはなし @hajikami
  • 20. インデックスのイメージ 20 ● 一般に B-Tree インデックスが使用されています ● B-Tree のイメージ D H L A B C E F G I J K MN O Dより前 D以降 H以降 L以降 Hより前 Lより前 2013/02/16 インデックスのおはなし @hajikami
  • 21. インデックスのイメージ 21 ● 一般に B-Tree インデックスが使用されています ● 同じデータの B-Tree でも… B I L A D F H J K O Bより前 B以降 H以降 L以降 Iより前 Lより前 C E G MN Dより前 D以降 F以降 Oより前 Fより前 Hより前 2013/02/16 インデックスのおはなし @hajikami
  • 22. インデックスのメンテナンスとは 22 ● B-Tree をこの状態に近づけること ● 綺麗なインデックスは、検索も早い D H L A B C E F G I J K MN O Dより前 D以降 H以降 L以降 Hより前 Lより前 2013/02/16 インデックスのおはなし @hajikami
  • 23. 全まとめ 23 ● データベースはメンテナンスが必要です ● 使っているうちにゴチャゴチャしてくる ● 作りっぱなしはダメ、絶対 ● インデックスのご利用は計画的に ● 検索は早くなるけど、更新が遅くなる ● インデックスが使えない検索もある ● (本セッションでは触れなかったが、) インデックスを使ったほうが検索が遅くなるケースもある 2013/02/16 インデックスのおはなし @hajikami
  • 24. おすすめ書籍 24 ● 達人に学ぶ SQL徹底指南書 ● 達人に学ぶDB設計 徹底指南書 ● SQL, RDBMSの基礎知識を解説している ● Webエンジニアのための データベース技術[実践]入門 ● 超入門から運用事例まで Mobage を例に解説している ● 44のアンチパターンに学ぶDBシステム ● DBに関するアンチパターンとその改善のためのヒント (組織の改善を含む)について解説している 2013/02/16 インデックスのおはなし @hajikami
  • 25. 終わり 25 ありがとうございました! 2013/02/16 インデックスのおはなし @hajikami