noa*_*ale 5 django postgresql primary-key
我试图找出为什么Django(或PostgreSQL,不确定它在哪个级别)不重用已被删除的对象的主键.创建对象时,它们都具有一个自动递增的id值,并按数据库中的id值排序.例如:
ID
五
4
3
2
1
假设我碰巧删除ID为5的对象:
ID
4
3
2
1
当我创建一个新对象时,它的ID为6:
ID
6
4
3
2
1
为什么不将"5"指定为刚创建的新对象的主键?为什么它有6个呢?
小智 13
分配的主键通常基于序列,因为它更容易存储和计算单个值以及序列中的下一个值.考虑一个包含100万条记录的表和一条删除5,000条记录的删除表.要填写新打开的键值,您必须使用内存来存储这些选项或扫描表格以获得最低的开放值.与仅分配序列中的下一个值相比,两者都很昂贵.
| 归档时间: |
|
| 查看次数: |
2635 次 |
| 最近记录: |