「インデックスを付けたのに遅い」「実行計画を見ても何を確認すればいいか分からない」は SQL Server あるある。 この記事では、実行計画の見方とインデックスが使われないときの切り分けをざっくり逆引きする。 先に結論 ...
続きを読む断片化が進んだ索引に対して、再構築(リビルド)と再構成(リオーガナイズ)のどちらを使うかで、負荷・ロック・効果の出方が違う。数値の目安は環境依存なので、「どちらが軽いか/何が付随するか」で選ぶのが実務的。 先に結論 使い ...
続きを読む読み取りがロック待ちで止まるとき、ヒントでロックを回避したくなる。いわゆる NOLOCK(読み取り未コミット相当)だ。速く見える一方で、消えたり二重に見えたりする読み取りが混ざりうる。 先に結論 何が起きうるか 使うなら ...
続きを読む同じ手続き・同じパラメータ化文なのに、ある値では速い・別の値では極端に遅い——典型がパラメータスニッフィング。初回コンパイル時の値向け計画が、別の分布の呼び出しに再利用される。 先に結論 切り分け よく使う対処の型 関連 ...
続きを読むオプティマイザは統計を見て行数を推定する。古い/偏った統計のままだと、スキャン過多や悪い結合順になり、突然遅くなる。自動更新に任せきりか、メンテジョブで触るかが運用の分岐点。 先に結論 いつ更新を検討するか 運用の型 関 ...
続きを読むNested Loop(ネステッドループ結合): 外側テーブル1行ごとに内側テーブルを1周ループしながら結合する方法。外側テーブルの行数が少なく、内側テーブルにインデックスがある場合に処理が高速になる。 Merge Jo ...
続きを読む