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
2.6k
3
Share
元Oracle 使いだけど、 MySQL のSQL 実行計画について ちゃんと調べた
MANABIYA (
https://manabiya.tech
) で話した資料です。
katsuhisa_
PRO
March 23, 2018
More Decks by katsuhisa_
See All by katsuhisa_
だいたい分かった気になる 『SREの知識地図』 / introduction-to-sre-knowledge-map-book
katsuhisa91
PRO
3
2.4k
SRE本出版からまもなく10年!〜これまでに何が起こり、これから何が起こるのか〜
katsuhisa91
PRO
0
470
Reliability Engineering at Studist
katsuhisa91
PRO
0
550
依頼仕事の最適化 〜未完了をいかに完了にするか〜
katsuhisa91
PRO
17
11k
障害対応の人間的側面
katsuhisa91
PRO
4
1.4k
Inside Studist Lightning Talks
katsuhisa91
PRO
0
960
SRE NEXT で過去に紹介されたAWS 知見速習
katsuhisa91
PRO
2
980
インフラエンジニアの多様性と評価、またはキャリアへのつなげ方
katsuhisa91
PRO
0
1.2k
Job Crafting
katsuhisa91
PRO
0
3.4k
Other Decks in Technology
See All in Technology
インターネットの技術 / Internet technology
ks91
PRO
0
140
#jawsugyokohama 100 LT11, "My AWS Journey 2011-2026 - kwntravel"
shinichirokawano
0
300
こんなアーキテクチャ図はいやだ / Anti-pattern in AWS Architecture Diagrams
naospon
1
390
🀄️ on swiftc
giginet
PRO
0
380
2026年、知っておくべき最新 サーバレスTips10選/serverless-10-tips
slsops
13
4.9k
最初の一歩を踏み出せなかった私が、誰かの背中を押したいと思うようになるまで / give someone a push
mii3king
0
150
幾億の壁を超えて/Beyond Countless Walls(JP)
ikuodanaka
0
130
CloudSec JP #005 後締め ~ソフトウェアサプライチェーン攻撃から開発者のシークレットを守る~
lhazy
0
220
Code Interpreter で、AIに安全に コードを書かせる。
yokomachi
0
6.6k
Azure Speech で音声対応してみよう
kosmosebi
0
140
最近の技術系の話題で気になったもの色々(IoT系以外も) / IoTLT 花見予定会(たぶんBBQ) @都立潮風公園バーベキュー広場
you
PRO
1
200
AIを共同作業者にして書籍を執筆する方法 / How to Write a Book with AI as a Co-Creator
ama_ch
2
120
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
370
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
64
54k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
170
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
730
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
510
The Cost Of JavaScript in 2023
addyosmani
55
9.8k
Site-Speed That Sticks
csswizardry
13
1.2k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Ethics towards AI in product and experience design
skipperchong
2
250
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
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
自己紹介 スタディストでは、 いっしょに闘ってくれるエンジニアを常に募集中