D0000D發往論壇板塊-------------------------------------------------------
No0 號板塊 dedecms
D8888D貼子標題-------------------------------------------------------
以下3種方案哪種速度最快?
D8888D主貼內容-------------------------------------------------------
mysql表
a, b, c, d, e, f字段
a為主鍵, 類型為vachar(20)
現在要更新, 一共1萬條記錄
要執行以下語句1萬次, 不使用事務
方案1:
UPDATE table SET b = 222 , c = 333, d = 444 WHERE a = xx
方案2:
REPLACE INTO table VALUES($a,$b,$c,$d,$e,$f)
方案3:
等你寫
我來回答
D8888D回貼內容-------------------------------------------------------
1吧.
D8888D回貼內容-------------------------------------------------------
也很想知道這個問題,幫頂一個。
D8888D回貼內容-------------------------------------------------------
方案3!~[img]http://www.phpchina.com/bbs/images/smilies/default/victory.gif[/img]
D8888D回貼內容-------------------------------------------------------
應該沒差別吧?
D8888D回貼內容-------------------------------------------------------
樓主似乎在弄數據同步。
數據同步有三種需求:增,刪,改。
方案1只滿足改的需求。
方案2滿足增和改的需求。
D8888D回貼內容-------------------------------------------------------
封裝成一條 REPLACE INTO 語句或許效率會比較高,因為只需要向數據庫服務器發送一次指令,像這樣:
REPLACE INTO table VALUES (1, 1, 1, 1),(2, 1, 1, 1),(3, 1, 1, 1),(4, 1, 1, 1);
D8888D回貼內容-------------------------------------------------------
[url=http://bbs.phpchina.com/redirect.php?goto=findpost&pid=1067540&ptid=126860]鏈接標記6#[/url] faallan
恩!
不過我只需要改, 不需要增.
D8888D回貼內容-------------------------------------------------------
[url=http://bbs.phpchina.com/redirect.php?goto=findpost&pid=1067568&ptid=126860]鏈接標記7#[/url] 路游寶寶
replace into其實是二次查詢,先刪除再增加
不過優點是不用事務時可以一次合並幾句
由於先刪除再增加,不知道在高並發下會怎麼樣,要照顧到讀
還沒實際測試, 不知道能快多少