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之间。
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;这个比较快。 但没有具体测试过。
应该是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 快吗?
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/23/4210633.aspx
ACCESS的真假:二、检查记录有无再insert 或 update 比 不管有无直接 delete 再 insert 快吗?
作者: ACMAIN_CHM 发布时间: 2011-06-02