【くえりー】

クエリ とは?

💡 データベースへの「注文票」
📌 このページのポイント
アプリケーション 「ユーザー一覧が ほしい!」 クエリ送信 SELECT * FROM users WHERE age > 20; ↑ SQL クエリ(問い合わせ文) id | name | age 1 | Ken | 25 2 | Ami | 30 データベース 結果セット(取得したデータ) ▶ 1 | Ken | 25 ▶ 2 | Ami | 30
アプリがSQLクエリをデータベースに送り、条件に合うデータが結果セットとして返ってくる
ひよこ ひよこ

クエリって何?

ペンギン先生 ペンギン先生

データベースへの「注文票」だよ。お店で「唐揚げ定食をください」と注文するみたいに、データベースに「このデータをください」と命令する文のことだよ。

ひよこ ひよこ

どんな言葉で書くの?

ペンギン先生 ペンギン先生

SQLという言語が代表的だよ。たとえばユーザー一覧を取得するなら「SELECT * FROM users」と書くんだ。英語っぽくて読みやすいのが特徴で、「usersから全部選んで」という意味だよ。

ひよこ ひよこ

どんなことができるの?

ペンギン先生 ペンギン先生

大きく4種類あって、データを取得するSELECT、追加するINSERT、更新するUPDATE、削除するDELETEだよ。この4つで頭文字をとって「CRUD(クラッド)」とも呼ばれるよ。

ひよこ ひよこ

クエリって書き方で速さが変わるの?

ペンギン先生 ペンギン先生

大きく変わるよ!同じ結果を得るクエリでも、書き方が悪いと何十倍も遅くなることがある。だからクエリを最適化する「チューニング」という作業が仕事でよく出てくるんだ。

ひよこ ひよこ

おもしろい!クエリを何度も送りすぎて遅くなることってあるの?

ペンギン先生 ペンギン先生

面白いことに、「N+1問題」というものがあって、たとえばユーザー一覧を1回で取得した後、各ユーザーの詳細をそれぞれ個別に取得するクエリを何度も送ってしまうことがあるんだ。100人いたら合計101回のクエリが走ることになる。ORMというライブラリを使うと気づかないうちにこれが起きやすくて、「なんかページが遅い…」の原因がこれだった、ということが現場でよくあるよ。気づけないエンジニアも多いくらい、落とし穴なポイントなんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「クエリ」って出てきたら「データベースへの命令文のことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「query」 = 質問・問い合わせ
💬 「クエスチョン」と同じ語源。データベースに「質問する」イメージで覚えよう
← 用語集にもどる