Tol*_*leo 5 mysql performance delete performance-tuning
在这个方案中
id uid content
1 1 A
2 1 B
3 1 C
4 1 D
5 1 E
Run Code Online (Sandbox Code Playgroud)
如果用户决定他不需要这些行,id = 3, 4, 5是让他将其设置content为NULL还是删除该行更好?
这个过程发生了很多次而且他可能会NULL再次使用这些插槽。我是否仍然使用UPDATE并将其设置为NULL以防他将来更改它?还是只是DELETE整行?
问题是这样的:最好
DELETE行?INSERT| -> DELETE-> INSERT..DELETE->INSERT
或者
UPDATE行?INSERT| -> UPDATE to NULL-> UPDATE to value.. UPDATE to NULL->UPDATE to value
如果这些行将被频繁重复使用,最好将值设置为NULL,或者简单地添加一列is_deleted以指示该行已被软删除。连续删除和插入行会导致表碎片化严重,并可能导致性能下降。这通常用于队列中有已知数量的槽(行)的队列,并且这些槽是提前分配的。
如果这些行不会被重用,或者很少被重用,那么最好释放这些行使用的空间。