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

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

WBOY
풀어 주다: 2016-06-13 09:52:46
원래의
1199명이 탐색했습니다.

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


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿