※ パクレゼルヴではWeb開発エンジニアを大募集中!詳細はこちら
Home > MySQL, データベース > SQLチューニング基礎2

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回更新

置き換えれる時は迷わず変えてしまいましょうネ

以上。か^-^つんがお送りしました。

かーつん MySQL, データベース

  1. No comments yet.
  1. No trackbacks yet.