Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
データベースの気持ちになろう (ハンズオン)
Search
NearMeの技術発表資料です
September 09, 2022
Programming
0
770
データベースの気持ちになろう (ハンズオン)
NearMeの技術発表資料です
September 09, 2022
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
第83回NearMe技術勉強会.pptx.pdf
nearme_tech
0
5
Dynamic Vehicle Routing のシミュレーションを Streamlitで作ってみた
nearme_tech
0
27
ログ監視ツールについて調べてみた
nearme_tech
0
22
(インターン生が大学院で行なっている)研究紹介
nearme_tech
0
13
拡散モデルの概要 −§2. スコアベースモデルについて−
nearme_tech
0
34
jinja2を用いたログファイルの一覧化
nearme_tech
0
31
プログラミング言語を作る
nearme_tech
0
16
Bunファースト開発
nearme_tech
0
22
streamlitを使った数理最適化ダッシュボード
nearme_tech
0
66
Other Decks in Programming
See All in Programming
Laravel標準バリデーションでできること
hmb_ok
2
360
RubyVM を PHP で実装する 〜Hello World を出力するまで〜
memory1994
PRO
1
490
BuefyのMaintainerを引き継いだ件
kikuomax
0
520
Open Source Swift Workshop - Foundation and first party libraries
ikesyo
0
180
ファイル先頭の use の意味、説明できますか? 〜PHP の namespace と autoloading の関係を正しく理解しよう〜 / namespace and autoloading in php
okashoi
2
470
Deno に Web 標準 API を実装する / Implementing Web Standard API to Deno
petamoriken
0
350
脱・初心者!脱・マネコン!AWS CDKを使ってみませんか!?
har1101
0
110
PHPerKaigi 2024〜10年以上動いているレガシーなバッチシステムを Kubernetes(Amazon EKS) に移行する取り組み〜
tshinowpub
1
220
Creating Retro-Style Photos Using Swift
ski
1
340
AppDeveloperCon 2024 EU: Building polyglot developer experiences in 2024
salaboy
0
380
Why 1 + 1 = 2 in Swift?
1plus4
1
240
もうすぐ新年度、Babylon.jsがお勧めな3個の理由
hideg
0
160
Featured
See All Featured
For a Future-Friendly Web
brad_frost
170
8.9k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
101
6.6k
Pencils Down: Stop Designing & Start Developing
hursman
115
11k
Fashionably flexible responsive web design (full day workshop)
malarkey
397
65k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
11
1.4k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
67
38k
The World Runs on Bad Software
bkeepers
PRO
60
6.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
644
57k
Visualization
eitanlees
135
14k
StorybookのUI Testing Handbookを読んだ
zakiyama
10
4.5k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
Building Better People: How to give real-time feedback that sticks.
wjessup
350
18k
Transcript
0 データベースの気持ちになろう (ハンズオン) 2022-09-07 第13回NearMe技術勉強会 Kenji Hosoda
1 こちらのNotebookでハンズオンします https://gist.github.com/kenji4569/b0523114f4b0b4a30a911c0e864c70a4
2 下準備 • JupyterLabの起動 • Docker Engineのインストール • MySQLコンテナの起動 •
MySQLへの接続 ◦ テーブルの作成 ◦ レコードの挿入 ◦ レコードの選択
3 3 よく使う調査コマンド • SHOW CREATE TABLE でテーブル定義の表示 • EXPLAINでSQLの実行計画を表示
4 4 インデックスがどう効くか確認 • 100000件のレコード挿入 • インデックスを貼ってないフィールドによって1レコードを取得した時の実行時間を確認 • 200000件、300000件の場合、実行時間はどう増えるか? •
ID(プライマリキー)によって1レコードを取得した時はどうなるか? • インデックスを貼ると検索時間はどう変わるか? id name 1 一郎 2 二郎 3 三郎 プライマリキー B+ツリー クラスタインデックス (リーフ=”レコード”) セカンダリインデックス (リーフ=プライマリキーの値) リーフ
5 5 マルチカラムインデックスの挙動を確認 • 複数のフィールドによって1つのレコードを取得 • 片方のフィールドだけインデックスを貼って実行時間を確認 • マルチカラムインデックスを貼って実行時間を確認 •
片方のフィールドで絞り込んでオフセットを指定してレコードを取得した場合の実行時間を確認 id last_name first_name 1 一山 一郎 2 一山 二郎 3 二山 一郎
6 6 ソートを加えた時の挙動を確認 • インデックスが効く場合 • ファイルソートが発生する場合 • 片方のフィールドで絞り込んでソートした場合 •
マルチカラムインデックスではなく片方のフィールドだけインデックスを貼った場合
7 7 テーブル結合時のインデックスの挙動を確認 • 基本的なテーブル結合の説明(INNER JOIN、LEFT JOIN) • 結合時にインデックスが効いている場合 •
結合時にインデックスが効いてない場合 出典:https://www.codeproject.com/articles/33052/visual-representation-of-sql-joins
8 Thank you