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
そして僕は令和でクエリを書いた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
02
November 16, 2019
Programming
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
そして僕は令和でクエリを書いた
2019/11/16 TeckUp! LT大会#2 in 代々木 で話した時のスライドです
02
November 16, 2019
More Decks by 02
See All by 02
なぜarray_firstとarray_lastは採用、 array_value_firstとarray_value_lastは 見送りだったか / Why array_value_first and array_value_last was declined, then why array_first and array_last was accpeted?
cocoeyes02
0
570
Amazon ECS Managed Instances が リリースされた!キャッチアップしよう!! / Let's catch up Amazon ECS Managed Instances
cocoeyes02
0
550
新しいPHP拡張モジュールインストール方法「PHP Installer for Extensions (PIE)」を使ってみよう!
cocoeyes02
0
2k
PHP8.4におけるJITフレームワークIRと中間表現について理解を深める
cocoeyes02
1
1.4k
RemoveだらけのPHPUnit 12に備えよう
cocoeyes02
0
1.4k
PHP RFC: Deprecate implicitly nullable parameter types をサクッと話す
cocoeyes02
0
1.1k
PHPUnit 11 概論
cocoeyes02
5
4k
Random\Randomizer クラスで日常のあれこれを解決しよう! / Random\Randomizer class solves familiar trouble
cocoeyes02
1
1.5k
BASEにおける インシデント対応フローと工夫
cocoeyes02
0
1.3k
Other Decks in Programming
See All in Programming
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
490
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
130
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
130
PyO3 で既存 Python 評価器を Rust core 化する ー wasm-bindgen でブラウザにも配るための設計
kdash
1
300
What We Talk About When We Talk About XP
m_seki
2
220
typoなんかねぇよ
raspython3
0
660
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
260
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
780
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
190
不幸な GC
chencmd
0
870
Cloudflare is Agents
chimame
0
190
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
53
34k
Featured
See All Featured
How GitHub (no longer) Works
holman
316
150k
Embracing the Ebb and Flow
colly
88
5.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
230
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Rails Girls Zürich Keynote
gr2m
96
14k
Color Theory Basics | Prateek | Gurzu
gurzu
0
450
New Earth Scene 8
popppiees
3
2.5k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Mobile First: as difficult as doing things right
swwweet
225
10k
Building an army of robots
kneath
306
46k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Transcript
そして僕は令和で クエリを書いた 02 TeckUp ! LT 大会#2
自己紹介 名前:02 (大津 和槻) Twitter: @cocoeyes02 所属:株式会社ウィルゲート バックエンドエンジニア 趣味:ゲーム、カホン 特徴:カンファレンスジャンキー
php 系カンファレンスのスタッフやってたりしま す
SQL を使って クエリを 書いたことはありますか?
SQL を使って 複雑なクエリを 書いたことはありますか?
02 は運用保守で複雑なクエリ を書くときがあります ( データ調査、KPI 自動算出...)
平成時代の02 は複雑なクエリ かけませんでした
令和時代の02 が複雑なクエリ を書くときに 意識したことをいくつか ピックアップしました
LT のゴール 複雑なクエリを書くときに 必要なことがある程度わかる
複雑なクエリを書くときに 必要なこと 1. ベン図を意識せよ 2. いきなり1 つの複雑なクエリを作らない 3. 句を書く順番を意識する
ベン図を意識せよ
ベン図?
ex. アクティブな男性ユーザのCV 数
いきなり1 つの複雑なクエリ を作らない
ex. 今年新規登録した アクティブな男性ユーザのCV 数
出てくる悩み CV 数をテーブル結合しても、1 件もヒットしてい ない!
出てくる悩み CV 数をテーブル結合しても、1 件もヒットしてい ない! 作成したけどなんかデータがおかしい!けどどこ で間違えているかクエリが複雑でわからない!
出てくる悩み CV 数をテーブル結合しても、1 件もヒットしてい ない! 作成したけどなんかデータがおかしい!けどどこ で間違えているかクエリが複雑でわからない! アクティブの定義が変わって変更しなきゃいけな いけど、クエリが複雑で動作確認ができない!
_人人人人人人人人人人人人人人_ >何の戦果も得られませんでした<  ̄Y^Y^Y^Y^Y^Y^Y^^Y^Y^Y^Y^  ̄
まずは1 つ1 つクエリを書きま しょう 今年新規登録をしたユーザを取得するクエリ 男性ユーザを取得するクエリ アクティブ情報を取得するクエリ CV 対象を取得するクエリ
まずは1 つ1 つクエリを書きま しょう 今年新規登録をしたユーザを取得するクエリ 男性ユーザを取得するクエリ アクティブ情報を取得するクエリ CV 対象を取得するクエリ それぞれのクエリが正しいかは、この段階で検証しま
しょう
複数のクエリを合わせて、 1 つクエリを作る FROM 句や、JOIN と ON 句を使って結合していく 必要であれば、FROM 句、JOIN
と ON 句、 WHERE 句でサブクエリも使う
句を書く順番を意識する
よーし、まずは SELECT 句から書いて…
よーし、まずは SELECT 句から書いて…
02 が書く句の順番 1. FROM 2. JOIN とON 3. WHERE 4.
GROUP BY 5. HAVING 6. SELECT 7. DISTINCT 8. ORDER BY 9. LIMIT
SQL の評価順序 1. FROM 2. JOIN とON 3. WHERE 4.
GROUP BY 5. HAVING 6. SELECT 7. DISTINCT 8. ORDER BY 9. LIMIT
なぜSQL の評価順序順? 先にテーブル関係(FROM ~ JOIN とON 句)を書 きたい 次に条件(WHERE ~
HAVING 句)を書きたい 整理(SELECT ~ LIMIT 句)は最後に書きたい
なぜSQL の評価順序順? 先にテーブル関係(FROM ~ JOIN とON 句)を書 きたい 次に条件(WHERE ~
HAVING 句)を書きたい 整理(SELECT ~ LIMIT 句)は最後に書きたい 「ベン図を意識する」 「複数のクエリを合わせて、1 つクエリを作る」 を意識するならば、先にテーブル関係や条件を書きた いからこの順番で書いています
最後に ここまで色々言いましたが、複雑なクエリは書か ないに越したことはないです アプリケーションのクエリであれば、特にそう やるなよ!絶対やるなよ! できるならばテーブル設計を見直すなどして、簡 単なクエリデータを取得的るようにしましょう