扫码关注官方订阅号
某种应用场景下我需要SELECT判断是否存在数据,如果存在就UPDATE。不存在就INSERT INTO。
为了提高效率我直接用了REPLACE INTO替换了上面3条语句。但是其中的某一个字段我不需要覆盖,之前的方法还可行,现在用了REPLACE INTO却实现不了了。
请教大家这种情况下效率最好的方法是什么
业精于勤,荒于嬉;行成于思,毁于随。
官方文档:
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中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
官方文档:
replace into 匹配到条件以后会先delete然后insert,而不是执行update,效率较update低很多
还是建议使用你之前的做法,这样效率高
补充一下 @brayden 的答案 1. ON DUPLICATE KEY UPDATE 每次也会重新分配一个自增id(如果存在自增字段)。 2. REPLACE INTO 会把所有字段覆盖,SQL语句中没有指明值的置为默认值。但是 ON DUPLICATE KEY UPDATE 不会覆盖 sql 中没有指明的字段,只会更新原有字段。