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の技術発表資料です
PRO
September 09, 2022
Programming
0
790
データベースの気持ちになろう (ハンズオン)
NearMeの技術発表資料です
PRO
September 09, 2022
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
ルートの質を評価する指標について
nearme_tech
PRO
0
13
Rustで作る強化学習エージェント
nearme_tech
PRO
0
43
ビームサーチ
nearme_tech
PRO
0
36
WASM入門
nearme_tech
PRO
0
36
ESLintをもっと有効活用しよう
nearme_tech
PRO
0
25
リファクタリングのための第一歩
nearme_tech
PRO
0
68
ガウス過程回帰とベイズ最適化
nearme_tech
PRO
1
200
確率的プログラミング入門
nearme_tech
PRO
2
120
Observability and OpenTelemetry
nearme_tech
PRO
2
46
Other Decks in Programming
See All in Programming
Kotlinの開発でも AIをいい感じに使いたい / Making the Most of AI in Kotlin Development
kohii00
5
1.9k
オレを救った Cline を紹介する
codehex
15
13k
Visual StudioのGitHub Copilotでいろいろやってみる
tomokusaba
1
220
ML.NETで始める機械学習
ymd65536
0
240
変化の激しい時代における、こだわりのないエンジニアの強さ
satoshi256kbyte
0
110
たのしいSocketのしくみ / Socket Under a Microscope
coe401_
8
1.4k
PHPカンファレンス名古屋2025 タスク分解の試行錯誤〜レビュー負荷を下げるために〜
soichi
1
740
Learning Kotlin with detekt
inouehi
1
200
ファインディLT_ポケモン対戦の定量的分析
fufufukakaka
0
950
Duke on CRaC with Jakarta EE
ivargrimstad
0
130
やっと腹落ち「スプリント毎に動くモノをリリースする」〜ゼロから始めるメガバンクグループのアジャイル実践〜
sasakendayo
0
140
Jakarta EE meets AI
ivargrimstad
0
680
Featured
See All Featured
Producing Creativity
orderedlist
PRO
344
40k
Why Our Code Smells
bkeepers
PRO
336
57k
Faster Mobile Websites
deanohume
306
31k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.3k
Building Your Own Lightsaber
phodgson
104
6.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
134
33k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
Writing Fast Ruby
sferik
628
61k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Raft: Consensus for Rubyists
vanstee
137
6.8k
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