SQL性能(REPLACE/SELECT+INSERT+UPDATE/INSERT...ON DUPLICATE KEY)

1)
IF (SELECT * FROM ipstats WHERE ip='192.168.0.1') {
  UPDATE ipstats SET value=xxx WHERE ip='192.168.0.1';
} else {
  INSERT INTO ipstats (ip, value) VALUES ('192.168.0.1', xxx);
}

2)
INSERT INTO ipstats VALUES('192.168.0.1', xxx) ON DUPLICATE KEY UPDATE value=xxx;

3)
REPLACE INTO ipstats (ip, value) VALUES ('192.168.0.1', xxx);

有经验的人来说说,反正从我的经验来说在5.5以上版本,REPLACE INTO是性能很差的,系统负载超10,转成1的方式,系统负载直接将到1-2之间。

作者: M1234   发布时间: 2011-06-02

REPLACE 是先DELETE再INSERT

应该是INSERT INTO ipstats VALUES('192.168.0.1', xxx) ON DUPLICATE KEY UPDATE value=xxx;这个比较快。 但没有具体测试过。

作者: ACMAIN_CHM   发布时间: 2011-06-02

以前在CSDN有讨论过,但是在ACCESS数据库上,MYSQL上你可以自己测试一下然后分享一下结果。

http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/23/4210633.aspx
 ACCESS的真假:二、检查记录有无再insert 或 update 比 不管有无直接 delete 再 insert 快吗?

作者: ACMAIN_CHM   发布时间: 2011-06-02