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
910
Inside Studist Lightning Talks
katsuhisa91
PRO
0
740
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.2k
Other Decks in Technology
See All in Technology
株式会社島津製作所_研究開発(集団協業と知的生産)の現場を支える、OSS知識基盤システムの導入
akahane92
1
160
Datachain会社紹介資料(2024年11月) / Company Deck
datachain
4
17k
データの信頼性を支える仕組みと技術
chanyou0311
3
1.5k
私はこうやってマインドマップでテストすることを出す!
mineo_matsuya
0
170
コンテナのトラブルシューティング目線から AWS SAW についてしゃべってみる
kazzpapa3
1
120
データ活用促進のためのデータ分析基盤の進化
takumakouno
2
140
組み込みLinuxの時系列
puhitaku
3
970
What to do after `laravel new`
mattstauffer
0
140
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
12k
Microsoft MVPになる前、なってから/Fukuoka_Tech_Women_Community_1_baba
nina01
0
170
ドメイン名の終活について - JPAAWG 7th -
mikit
28
14k
10分でわかるfreee エンジニア向け会社説明資料
freee
18
520k
Featured
See All Featured
Speed Design
sergeychernyshev
24
580
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
7
560
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Fireside Chat
paigeccino
33
3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
GraphQLとの向き合い方2022年版
quramy
43
13k
Six Lessons from altMBA
skipperchong
26
3.5k
Agile that works and the tools we love
rasmusluckow
327
21k
Why Our Code Smells
bkeepers
PRO
334
57k
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
自己紹介 スタディストでは、 いっしょに闘ってくれるエンジニアを常に募集中