Skip to content
未経験から実務レベルへ|PHP初心者向け実践学習ブログ
@phpl4b
  • PHP環境
  • 入門編
  • Laravel
  • このサイトについて
  • PHP環境
  • 入門編
  • Laravel
  • このサイトについて
X: @phpl4b
Home chevron_right matty

Author

投稿者: matty

データベース

第12回: 複合インデックスの順序 — 列の並びひとつで速度が激変する

「インデックスを追加したはずなのに、クエリが遅い」——そんな経験はありませんか?実は複合インデックスは、列の順序を間違えるとほとんど機能しません。正しい順序で設計するだけで、クエリが劇的に速くなるケースがあります。この回では複合インデックスの順序の考え方を整理していきます。

matty • 1 min read
データベース

第11回: インデックスの基本戦略 — 「なぜ遅いのか」を論理的に説明できますか?

テスト環境では一瞬だったクエリが、本番の数十万件データでは5秒以上かかる。そういう事態に直面したとき、「インデックスを貼ればいいんじゃないか」と感覚で対応するのは危険です。闇雲にインデックスを追加すると、INSERT/UPDATE のたびにインデックスの更新コストが増え、むしろ書…

matty • 1 min read
データベース

第10回: サブクエリとCTEの基本 — 複雑なSQLを「読める」形に分解する

サブクエリを多重にネストしたSQLは、どこが何を返しているのか追いにくく、バグの原因も特定しづらくなります。3段ネストのサブクエリは、書いた本人でも翌週には読めないことがあります。

matty • 1 min read
データベース

第09回: HAVING句の使い所 — WHEREで書けないなら、HAVINGの出番

WHERE postcount >= 10 と書きたくなりますが、postcount は集計結果なので WHERE の時点ではまだ存在しません。WHERE はグループ化・集計の前に評価されるため、集計後の値を条件にするには別の構文が必要です。

matty • 1 min read
データベース

第08回: GROUP BYと集計関数 — アプリ側ループで集計するのはもう終わりにする

全投稿を取得してPHPの配列で count() するコードは、データが増えるほどメモリと処理時間を消費します。1万件のレコードを全件取得してアプリ側で集計するのは、DB本来の仕事をわざわざ横取りしている状態です。

matty • 1 min read
データベース

第07回: JOINの基本(INNER/LEFT) — ループで1件ずつ取るのをやめる

投稿一覧を取得した後、各投稿の著者名を取るためにループで SELECT FROM users WHERE id = ? を繰り返す——これがN+1問題の典型例です。100件の投稿があれば101本のSQLが走り、データが増えるほどレスポンスが悪化します。

matty • 1 min read
データベース

第06回: ORDER BYとLIMITで一覧最適化 — 「並び順が毎回違う」を今すぐ直す

一覧画面でよくある失敗が「ORDER BYを書かずにLIMITだけ指定する」パターンです。ORDER BYなしのLIMITは、MySQLが内部でどの行を返すかを保証しないため、同じクエリでも実行するたびに結果の順番が変わるという不具合が起きます。さらに、データ量が増えると OFF…

matty • 1 min read
データベース

第05回: SELECTとWHERE条件の使い方 — 「欲しいデータだけ」を正確に取り出す

SELECT で全件取得してアプリ側でフィルタリング——これは開発初期によくある実装です。しかしデータが10万件・100万件と増えるにつれ、レスポンスが劣化し、不要なデータ転送でメモリも圧迫されます。

matty • 1 min read
データベース

第04回: INSERT/UPDATE/DELETEの基本 — データ操作のミスをゼロにする書き方

UPDATE users SET name = ‘admin’ ——WHERE句を忘れた瞬間、全ユーザーの名前が書き変わります。更新系SQLのミスはデータ欠損に直結し、バックアップからの復元が必要になることも。

matty • 1 min read
データベース

第03回: 主キー・外部キーの基本 — データの「つながり」を壊さないために

ユーザーを削除したのに、そのユーザーの投稿が残り続ける。存在しないユーザーIDを持つ注文レコードが生まれる。外部キー制約がないDBは、アプリ側のバグがそのままデータ破損につながります。

matty • 1 min read
« 前へ 1 … 3 4 5 6 7 … 23 次へ »

最近の投稿

  • 第10回: よくあるエラーとトラブルシューティング — 詰まったときに読む一覧
  • 第09回: DockerでPHP環境をつくる — 再現性の高い環境をコードで定義する
  • 第08回: WSL2でPHP環境をつくる — WindowsでLinux開発体験を実現する
  • 第07回: Xdebugの設定 — var_dumpを卒業してブレークポイントデバッグへ
  • 第06回: VS Codeとおすすめ拡張機能 — PHP開発を快適にする設定

アーカイブ

  • 2026年5月
  • 2026年4月
  • 2026年3月
  • 2026年2月
  • 2026年1月
  • 2025年12月
  • 2025年11月
  • 2025年10月

カテゴリー

  • Docker
  • Git
  • Laravel
  • PHP環境
  • データベース
  • 入門編
  • 応用編
未経験から実務レベルへ|PHP初心者向け実践学習ブログ

© 2026 未経験から実務レベルへ|PHP初心者向け実践学習ブログ. All rights reserved.

X @phpl4b
  • プライバシーポリシー
  • 免責事項
  • 利用規約