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
元Oracle 使いだけど、 MySQL のSQL 実行計画について ちゃんと調べた
Search
katsuhisa_
PRO
March 23, 2018
Technology
3
2.4k
元Oracle 使いだけど、 MySQL のSQL 実行計画について ちゃんと調べた
MANABIYA (
https://manabiya.tech
) で話した資料です。
katsuhisa_
PRO
March 23, 2018
Tweet
Share
More Decks by katsuhisa_
See All by katsuhisa_
Reliability Engineering at Studist
katsuhisa91
PRO
0
200
依頼仕事の最適化 〜未完了をいかに完了にするか〜
katsuhisa91
PRO
17
9.5k
障害対応の人間的側面
katsuhisa91
PRO
3
1k
Inside Studist Lightning Talks
katsuhisa91
PRO
0
780
SRE NEXT で過去に紹介されたAWS 知見速習
katsuhisa91
PRO
2
830
インフラエンジニアの多様性と評価、またはキャリアへのつなげ方
katsuhisa91
PRO
0
1.1k
Job Crafting
katsuhisa91
PRO
0
3.1k
Self-Serviceとサイロ化と組織構造
katsuhisa91
PRO
0
1.1k
チームで取り組む障害対応
katsuhisa91
PRO
6
2.5k
Other Decks in Technology
See All in Technology
機械学習を「社会実装」するということ 2025年版 / Social Implementation of Machine Learning 2025 Version
moepy_stats
6
1.5k
re:Invent2024 KeynoteのAmazon Q Developer考察
yusukeshimizu
1
150
駆け出しリーダーとしての第一歩〜開発チームとの新しい関わり方〜 / Beginning Journey as Team Leader
kaonavi
0
120
comilioとCloudflare、そして未来へと向けて
oliver_diary
6
450
JuliaTokaiとJuliaLangJaの紹介 for NGK2025S
antimon2
1
130
「隙間家具OSS」に至る道/Fujiwara Tech Conference 2025
fujiwara3
7
6.5k
色々なAWSサービス名の由来を調べてみた
iriikeita
0
110
メールヘッダーを見てみよう
hinono
0
110
月間60万ユーザーを抱える 個人開発サービス「Walica」の 技術スタック変遷
miyachin
1
140
TSのコードをRustで書き直した話
askua
3
260
Reactフレームワークプロダクトを モバイルアプリにして、もっと便利に。 ユーザに価値を届けよう。/React Framework with Capacitor
rdlabo
0
130
Visual StudioとかIDE関連小ネタ話
kosmosebi
1
380
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1030
460k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Six Lessons from altMBA
skipperchong
27
3.6k
Into the Great Unknown - MozCon
thekraken
34
1.6k
Music & Morning Musume
bryan
46
6.3k
The Power of CSS Pseudo Elements
geoffreycrofte
74
5.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
30
2.1k
Facilitating Awesome Meetings
lara
51
6.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Optimising Largest Contentful Paint
csswizardry
33
3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Transcript
元Oracle 使いだけど、 MySQL のSQL 実行計画について ちゃんと調べた 株式会社スタディスト 北野 勝久 #MANABIYA
北野 勝久 : @katsuhisa__ #MANABIYA
SQL 実行計画つかったことある方 #MANABIYA
英語が読めるサルでも分かる SQL 実行計画 Parser Optimizer SQL Query Statistics SQL Executor
英語が読めるサルでも分かる SQL 実行計画 Parser Optimizer SQL Query Statistics SQL Executor
SQL 実行計画つくるニキ
英語が読めるサルでも分かる SQL 実行計画 = SQL をどういう風に 実行するか?の計画 SQL 実行計画
英語が読めるサルでも分かる SQL 実行計画 _人人人人人人人人_ > 今日のテーマ <  ̄Y^Y^Y^Y^Y^Y^Y ̄ = SQL をどういう風に
実行するか?の計画 ↑ 使ってるDB により、 計画の表現が違う SQL 実行計画
Oracle さんの場合 #MANABIYA
Oracle 実行計画の表示例 (プレゼン用に一部カットしています) -------------------------------------------------------------------------------------------- | Id | Operation | Name
| Rows | Cost (%CPU) | -------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 2 (0) | | 1 | TABLE ACCESS FULL | DUAL | 1 | 2 (0) | -------------------------------------------------------------------------------------------- #MANABIYA
Oracle 実行計画の処理 INDEX UNIQUE SCAN INDEX RANGE SCAN INDEX FULL
SCAN INDEX FAST FULL SCAN TABLE ACCESS BY INDEX ROWID TABLE ACCESS FULL #MANABIYA
Balanced Tree さえ理解していれば、 見れば意味がなんとなく分かる #MANABIYA
MySQL さんの場合 #MANABIYA
MySQL 実行計画の表示例 (プレゼン用に一部カットしています) +----------+-------+-----------------------+----------+---------+----------+ | table | type | possible_keys
| key | rows | Extra | +----------+-------+-----------------------+----------+---------+----------+ | shops | ALL | NULL | NULL | 60 | NULL | +----------+-------+-----------------------+----------+---------+----------+ #MANABIYA
MySQL 実行計画の処理 eq_ref const ref range index ALL #MANABIYA
よくわからん #MANABIYA
eq_ref const ref range index ALL MySQL 実行計画の処理 INDEX UNIQUE
SCAN に相当 INDEX RANGE SCAN に相当 FULL TABLE SCAN に相当 #MANABIYA
eq_ref const ref range index ALL MySQL 実行計画の処理 INDEX UNIQUE
SCAN に相当 INDEX RANGE SCAN に相当 ← じゃあ、これなに? FULL TABLE SCAN に相当 #MANABIYA
eq_ref const ref range index ALL MySQL 実行計画の処理 INDEX UNIQUE
SCAN に相当 INDEX RANGE SCAN に相当 FULL TABLE SCAN に相当 INDEX FULL SCAN に相当 #MANABIYA
MySQL の実行計画ちゃんと知らなかった頃のワイ 「index うまく使えてるっぽいなー。」 +----------+---------+-----------------------+----------+---------+----------+ | table | type |
possible_keys | key | rows | Extra | +----------+---------+-----------------------+----------+---------+----------+ | shops | index | NULL | NULL | 60 | NULL | +----------+---------+-----------------------+----------+---------+----------+
MySQL の実行計画ちゃんと知らなかった頃のワイ 「index うまく使えてるっぽいなー。」 +----------+---------+-----------------------+----------+---------+----------+ | table | type |
possible_keys | key | rows | Extra | +----------+---------+-----------------------+----------+---------+----------+ | shops | index | NULL | NULL | 60 | NULL | +----------+---------+-----------------------+----------+---------+----------+
ぜんぜんindex うまく使えてない #MANABIYA
(教訓)どうすれば失敗せずに済んだか? • あらかじめ、INDEX UNIQUE SCAN に相当する 別概念の存在を知っていれば、違和感を感じられた。 • そもそも、type 列だけでなく
他の列もちゃんと読んでいれば、 index の意味を疑うことができた。
良いSQL ライフを。 だれかMySQL のtype 列の仕様の歴史に詳しい人がいたら、 今日取り上げたネーミングの背景について教えてください #MANABIYA
Copyright (C) 2018 Studist Corporation. All Rights Reserved 24 #devsumiE
自己紹介 スタディストでは、 いっしょに闘ってくれるエンジニアを常に募集中