mysql 保存或修改 的实现方式

1.NSERT ... ON DUPLICATE KEY UPDATE (mysql独有 )

INSERT INTO table_name (id, name, value) 
VALUES (1, 'A', 150) 
ON DUPLICATE KEY UPDATE value = value + 1, name= VALUES(name);

2.REPLACE 

REPLACE INTO users (id, name, age) VALUES (123, '赵本山', 50);

NSERT ... ON DUPLICATE KEY UPDATE ...的性能通常比REPLACE INTO好。‌

INSERT ... ON DUPLICATE KEY UPDATE ...的性能通常比REPLACE INTO好。‌

  • 性能优化:‌INSERT ... ON DUPLICATE KEY UPDATE ... 操作主要是更新操作,‌数据库可以更有效地优化这类操作,‌尤其是在涉及大量数据时。‌这种操作通过减少必要的操作和更高效地处理索引来优化性能,‌因此通常比REPLACE INTO更快1。‌

  • 操作方式:‌REPLACE INTO首先尝试插入数据到表中。‌如果发现表中已经有此行数据(‌根据主键或唯一索引判断)‌,‌则先删除此行数据,‌然后插入新的数据。‌这种方式在处理重复键时会涉及到数据的删除和重新插入,‌可能会对性能产生影响。‌相比之下,‌INSERT ... ON DUPLICATE KEY UPDATE ...在遇到重复键时,‌只执行更新操作,‌不会删除原有数据,‌从而避免了不必要的全表扫描和数据重建,‌提高了性能2。‌

  • 适用场景:‌在实际业务场景中,‌当需要更新或插入部分列的数据时,‌应使用INSERT ... ON DUPLICATE KEY UPDATE ...,‌因为它允许只更新或插入部分列的数据,‌而不会像REPLACE INTO那样删除其他列的原有值。‌这在使用外键约束或需要保留原有数据的情况下尤为重要2。‌

综上所述,‌虽然REPLACE INTO在语法上可能更简单易读,‌但在需要高性能和数据完整性的场景下,‌INSERT ... ON DUPLICATE KEY UPDATE ...因其更高的性能和更灵活的数据处理方式而更受推荐。‌

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值