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.3k
元Oracle 使いだけど、 MySQL のSQL 実行計画について ちゃんと調べた
MANABIYA (
https://manabiya.tech
) で話した資料です。
katsuhisa_
PRO
March 23, 2018
Tweet
Share
More Decks by katsuhisa_
See All by katsuhisa_
依頼仕事の最適化 〜未完了をいかに完了にするか〜
katsuhisa91
PRO
17
9.1k
障害対応の人間的側面
katsuhisa91
PRO
3
920
Inside Studist Lightning Talks
katsuhisa91
PRO
0
750
SRE NEXT で過去に紹介されたAWS 知見速習
katsuhisa91
PRO
2
800
インフラエンジニアの多様性と評価、またはキャリアへのつなげ方
katsuhisa91
PRO
0
1.1k
Job Crafting
katsuhisa91
PRO
0
3k
Self-Serviceとサイロ化と組織構造
katsuhisa91
PRO
0
1.1k
チームで取り組む障害対応
katsuhisa91
PRO
6
2.4k
スタディスト開発部が面接で大切にしている 3つのこと
katsuhisa91
PRO
2
2.3k
Other Decks in Technology
See All in Technology
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
【若手エンジニア応援LT会】ソフトウェアを学んできた私がインフラエンジニアを目指した理由
kazushi_ohata
0
150
Engineer Career Talk
lycorp_recruit_jp
0
160
Introduction to Works of ML Engineer in LY Corporation
lycorp_recruit_jp
0
110
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
2
310
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
フルカイテン株式会社 採用資料
fullkaiten
0
40k
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
990
The Rise of LLMOps
asei
7
1.4k
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
380
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
590
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Visualization
eitanlees
145
15k
Embracing the Ebb and Flow
colly
84
4.5k
GraphQLとの向き合い方2022年版
quramy
43
13k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
860
Side Projects
sachag
452
42k
Being A Developer After 40
akosma
86
590k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
We Have a Design System, Now What?
morganepeng
50
7.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Documentation Writing (for coders)
carmenintech
65
4.4k
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
自己紹介 スタディストでは、 いっしょに闘ってくれるエンジニアを常に募集中