MySQL備忘録
大量データの INSERT / UPDATE パフォーマンスチューニング

数万〜数百万件規模のデータを RDB へ投入・更新するバッチ処理では、素朴な「1 行ずつループして INSERT / UPDATE」がそのまま数十分〜数時間のボトルネックになります。本記事では、大量データの INSERT / UPDATE …

続きを読む
MySQL備忘録
EXPLAIN の読み方と実行計画の改善 ハンズオン

「一覧画面が重い」「夜間バッチが終わらない」。この種の相談の多くは、特定の SQL が想定外のアクセス経路(実行計画)で動いていることが原因です。インデックスを追加すれば直ることもありますが、まず必要なのは「DB が今どう動いているか」を正…

続きを読む
MySQL備忘録
複合インデックスの設計とカーディナリティ入門

テーブルにインデックスを張ったのにクエリが速くならない。あるいはインデックスはあるのにスキャン行数が減らない。こうした状況の多くは、「複合インデックスの列順」と「カーディナリティ」への理解不足から生まれます。

続きを読む
MySQL備忘録
外部キーと参照整合性の設計:入門から実務判断まで

リレーショナルデータベースでは、複数のテーブルが「参照」で結びついています。注文テーブルの userid はユーザーテーブルの誰かを指し、注文明細の orderid はどこかの注文を指します。この「指す・指される」の関係が壊れると、どのユー…

続きを読む