SQLチューニング基礎2 
2008/9/30 火曜日 21:11:41
こんばんわ。かーつんです。
SQL負荷って、考えたことありますか?
条件などにもよりますが、
SELECT、INSERT、DELETE、UPDATE順に徐々に重くなります。
理由は簡単。
SELECT=検索
INSERT=挿入+インデックスレコード追加
DELETE=検索+削除+インデックスレコード更新
UPDATE=検索+更新+インデックスレコード更新
と、処理が増えるからです。
例えば、UPDATEを100回投げるなら、
TRUNCATE+INSERTの方が早い事もあります。
要するに更新が一番重く、検索が一番早いわけですね。
で、よくあると思いますが、
あればUPDATEかけて、なければINSERTというのを
SELECT+UPDATE+INSERTの組み合わせでやってる方が多いと思います。
そんなときは、迷わずREPLACEを使いましょう。
REPLACEは検索+[更新|挿入]+インデックス[更新|挿入]です。
上の例だと、
SELECT+(UPDATE or INSERT)=検索+[(検索+更新)|挿入]
REPLACE=検索+[更新|挿入]
どちらが早いか一目瞭然ですよね。
検索一回分REPLACEの方が早いです。
もちろん条件的に無理。ということもありますが、
使えるときは使っちゃった方が、処理が早いです。
プログラムで、
ファイルレコード1件ごとにSELECT投げて、
UPDATEかINSERTか判断して実行して、
これを1000回繰り返す。コレは悪です。やってたら犯罪です。
一括でファイル読み込んで、
一括でSELECT投げて、
REPLACEで一気に1000回更新
置き換えれる時は迷わず変えてしまいましょうネ
以上。か^-^つんがお送りしました。