最近我观看了一段关于
mysql中CRUD操作的视频,并且在该视频中引起了我注意的一件事,评论员声称删除了对mysql索引性能不好的行,而不是我们应该使用状态列.
那么,这两者之间真的有区别吗?
最佳答案 我想策略是删除一行影响所有索引,而修改’status’列可能不会影响任何索引(因为你可能不会因为基数较低而索引该列).
但是,在删除行时,对索引的影响很小.填充在填充页面时会影响索引性能,从而导致重建索引.删除不会发生这种情况.使用删除时,索引记录仅标记为删除.
MySQL稍后(当负载较低时)将从索引中清除已删除的行.因此,删除已经缓存.为什么加倍努力?
您的删除确实需要索引,就像您的选择和更新一样,以便快速找到要删除的记录.所以,不要责怪由于MySQL索引性能缺失或错误索引导致的缓慢删除.您的delete语句的WHERE子句应该能够使用索引.使用InnoDB,这对于确保仅锁定单个索引记录而非必须锁定所有记录或范围也很重要.