mysql - REPLACE INTO的问题
迷茫
迷茫 2017-04-17 11:15:48
[MySQL讨论组]

某种应用场景下我需要SELECT判断是否存在数据,如果存在就UPDATE。不存在就INSERT INTO。

为了提高效率我直接用了REPLACE INTO替换了上面3条语句。但是其中的某一个字段我不需要覆盖,之前的方法还可行,现在用了REPLACE INTO却实现不了了。

请教大家这种情况下效率最好的方法是什么

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
PHP中文网

官方文档:

Keep in mind that a REPLACE INTO requires a test on the keys, and if a matching unique key is found on any or all columns, a DELETE FROM is executed, then an INSERT is executed.

replace into 匹配到条件以后会先delete然后insert,而不是执行update,效率较update低很多

还是建议使用你之前的做法,这样效率高

大家讲道理

补充一下 @brayden 的答案 1. ON DUPLICATE KEY UPDATE 每次也会重新分配一个自增id(如果存在自增字段)。 2. REPLACE INTO 会把所有字段覆盖,SQL语句中没有指明值的置为默认值。但是 ON DUPLICATE KEY UPDATE 不会覆盖 sql 中没有指明的字段,只会更新原有字段。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号