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