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.2k
元Oracle 使いだけど、 MySQL のSQL 実行計画について ちゃんと調べた
MANABIYA (
https://manabiya.tech
) で話した資料です。
katsuhisa_
PRO
March 23, 2018
Tweet
Share
More Decks by katsuhisa_
See All by katsuhisa_
障害対応の人間的側面
katsuhisa91
PRO
2
740
Inside Studist Lightning Talks
katsuhisa91
PRO
0
660
SRE NEXT で過去に紹介されたAWS 知見速習
katsuhisa91
PRO
1
740
インフラエンジニアの多様性と評価、またはキャリアへのつなげ方
katsuhisa91
PRO
0
1k
Job Crafting
katsuhisa91
PRO
0
2.8k
Self-Serviceとサイロ化と組織構造
katsuhisa91
PRO
0
1k
チームで取り組む障害対応
katsuhisa91
PRO
5
2.3k
スタディスト開発部が面接で大切にしている 3つのこと
katsuhisa91
PRO
2
2.1k
プロダクト開発における暗黙知との向き合い方
katsuhisa91
PRO
6
2.8k
Other Decks in Technology
See All in Technology
Building Kotlin Multiplatform Libraries in 2024
atsushieno
0
890
State of Amazon Location Service
dayjournal
0
110
お手並み拝見にしないオンボーディング
zuckey_17
2
1.1k
スクラムゾンビになっちゃたので、古のフレームワークを導入した話 / Embracing Ancient Frameworks
kaonavi
0
170
Go Global! In the AWS Community Global Initiatives
hiroramos4
PRO
1
120
Okioに愛を込めて
ryunen344
3
620
RubyKaigiのプロポーザルを通したい。 / rubykaigi-proposal
toshimaru
3
450
日本発24時間グローバルイベント"JAWS PANKRATION 2024"の紹介
yoshimi0227
1
140
半年かけてPHP5.6からPHP7.4までバージョンアップした苦労と工夫 PHPカンファレンス福岡2024
kechiiin
1
140
負荷テスト on AWS のすすめ (AWS Summit Japan 2024 - Ministage session)
mabuchs
0
100
良いユニットテストの性質を整理してたら考えるべき設計も見えてきたの
bun913
12
5k
Oracle Database 23ai Overview
oracle4engineer
PRO
1
760
Featured
See All Featured
Done Done
chrislema
178
15k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
155
14k
Typedesign – Prime Four
hannesfritz
36
2.2k
How to train your dragon (web standard)
notwaldorf
78
5.4k
From Idea to $5000 a Month in 5 Months
shpigford
377
46k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
127
32k
Why Our Code Smells
bkeepers
PRO
331
56k
The Power of CSS Pseudo Elements
geoffreycrofte
63
5.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
42
4.6k
BBQ
matthewcrist
80
8.9k
Web development in the modern age
philhawksworth
203
10k
Optimising Largest Contentful Paint
csswizardry
14
2.5k
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
自己紹介 スタディストでは、 いっしょに闘ってくれるエンジニアを常に募集中