
LEFT JOIN が左側のテーブルを基準にすべての行を残すのに対し、RIGHT JOIN は右側のテーブルを基準にします。この...
WHERE 句で「100 以上 500 以下」のような範囲条件を書くとき、`>=` と `<=` を AND で繋ぐ方法がまず思...
WHERE 句で完全一致の条件を書くだけでは、実務の検索要件に対応しきれない場面が多くあります。「名前に"田"が含まれるユーザー...
SELECT で取得したデータをそのまま表示するだけでは、実務の要件を満たせない場面があります。たとえば、数値で格納されたステー...
サービスの可用性を維持するためには、MySQL サーバーの単一障害点をなくす設計が不可欠です。自動フェイルオーバーの仕組みを導入...
テーブルの行数が数千万件を超えてくると、クエリの実行時間やメンテナンス操作の所要時間が急激に増加します。パーティショニングは、こ...
MySQL が出力するログは、障害対応やパフォーマンス改善の最も重要な手がかりになります。ログの種類と特性を理解し、適切に設定・...
MySQL を運用するうえで、ユーザー管理と権限設定は避けて通れないテーマです。適切なユーザー設計ができていないと、セキュリティ...
テーブルの行数が数千万〜数億を超えると、インデックスを適切に設計してもクエリの応答時間が悪化し始める。パーティショニングはテーブ...
数億行を超えるテーブルにカラム追加やインデックス変更を行う場面は避けて通れない。しかし、無計画に ALTER TABLE を実行...
数千〜数百万行のデータを INSERT する場面では、1 行ずつ愚直に実行すると時間がかかりすぎる。MySQL には大量 INS...
トランザクション分離レベルは、複数のトランザクションが同時に実行される際に、互いの変更がどの程度見えるかを制御する仕組みだ。分離...
複数のトランザクションが同時にデータへアクセスする環境では、データの整合性を保つためにロックの仕組みが欠かせない。MySQL の...
MySQL を安定して運用し続けるには、サーバーの状態を継続的に監視し、問題を早期に検知する仕組みが不可欠だ。障害が起きてから対...
MySQL のレプリケーションは、あるサーバー(ソース)のデータを別のサーバー(レプリカ)に自動的に複製する仕組みだ。読み取り負...
テーブル設計は最初に完璧なものを作れることのほうが稀で、運用中にスキーマを変更する場面は必ず訪れます。MySQL では ALTE...
MySQL で文字列データを正しく扱うには、文字コード(キャラクタセット)と照合順序(コレーション)の設定が欠かせません。文字化...
テーブル設計にはやりがちな失敗パターンがいくつかあり、これらは「アンチパターン」として知られています。問題が顕在化するのは運用が...
MySQL 5.7.8 で導入された JSON 型は、スキーマレスなデータを格納したい場面で威力を発揮します。すべてのデータを正...
多対多リレーションを実現するために使うのが中間テーブル(結合テーブル、ピボットテーブルとも呼ばれます)です。リレーショナルデータ...
ほとんどのアプリケーションで「レコードがいつ作られたか」「いつ更新されたか」を記録する必要があります。created_at と ...
レコードを削除する方法には、物理削除(実際に行を消す)と論理削除(削除フラグを立てる)の2つのアプローチがあります。どちらを採用...
テーブルやカラムの命名規則は、コードの可読性と保守性に直結します。チームで開発する場合は特に重要で、統一されたルールがないと、テ...
ENUM 型と SET 型は、カラムに格納できる値をあらかじめ定義したリストに制限する MySQL 固有のデータ型です。便利な反...











