为什么MySQL不建议使用delete删除数据

MySQL之所以不推荐delete,主要有两个原因:

1.delete只是把被删除数据的标记位移除,并没有真正的删除记录,只是在查询时忽略这些记录。这会导致表文件膨胀,存储空间不释放,影响性能。如果是大表,delete掉一半的数据,表文件依然保留原来的大小,空间浪费会很严重。

2.delete删除后,表的行数变少,但索引并不随之减少。这会导致索引的 Sparseness 变高,查找效率降低。如果追求高性能,这显然是不合适的。那么,如果面试官追问用什么方式比较好,可以回答MySQL推荐用逻辑删除,而不是物理删除。逻辑删除是在表中增加一个删除标记字段,更新这个字段表示删除。查询时添加where条件过滤未删除的记录。这可以避免空间不释放和索引过稀疏的问题。

如果面试官追问为什么不永久删除,可以说除非迫不得已,否则逻辑删除更符合大多数场景的需求。数据永久丢失可能会造成信息的永久损失,这往往不太可取。逻辑删除找到了一个平衡,既满足了删除需求,又保留了历史数据,方便后续的恢复与追溯。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值