Home >php教程 >php手册 >以下3种方案哪种速度最快

以下3种方案哪种速度最快

WBOY
WBOYOriginal
2016-06-13 09:52:461190browse

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其实是二次查询,先删除再增加
不过优点是不用事务时可以一次合并几句
由于先删除再增加,不知道在高并发下会怎么样,要照顾到读
还没实际测试, 不知道能快多少


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:关于str_padNext article:zend studio 的问题