Maison >développement back-end >tutoriel php >以下3种方案哪种速度最快_PHP教程
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其实是二次查询,先删除再增加
不过优点是不用事务时可以一次合并几句
由于先删除再增加,不知道在高并发下会怎么样,要照顾到读
还没实际测试, 不知道能快多少