id主键的创建及作用

1. 作用

  • 从业务上来说
    在设计数据库时不需要费尽心思去考虑设置哪个字段为主键。然后是这些字段只是理论上是唯一的,例如使用图书编号为主键,这个图书编号只是理论上来说是唯一的,但实践中可能会出现重复的 情况。所以还是设置一个与业务无关的自增ID作为主键,然后增加一个图书编号的唯一性约束。
  • 从技术上来说
    如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页。 总的来说就是可以提高查询和插入的性能。
  • 对InnoDB(数据存储引擎)来说
  1. 主键索引既存储索引值,又在叶子节点中存储行的数据,也就是说数据文件本身就是按照b+树方式存放数据的。
  2. 如果没有定义主键,则会使用非空的UNIQUE键做主键 ; 如果没有非空的UNIQUE键,则系统生成一个6字节的rowid做主键;
    聚簇索引中,N行形成一个页(一页通常大小为16K)。如果碰到不规则数据插入时,为了保持B+树的平衡,会造成频繁的页分裂和页旋转,插入速度比较慢。所以聚簇索引的主键值应尽量是连续增长的值,而不是随机值(不要用随机字符串或UUID)。
    故对于InnoDB的主键,尽量用整型,而且是递增的整型。这样在存储/查询上都是非常高效的。

2. 业务主键和非业务主键

  • 自增字段作为主键(一般多用int类型定义),也称为非业务主键(逻辑主键或者代理主键)意思就是这列数据与业务无关,仅仅作为主键而设计,会浪费主键资源。

3. sqlserver修改主键为自增

  • 先删除id字段, 执行下面sql即可:
    alter table 表名 add id int IDENTITY (1,1) PRIMARY KEY
    如果在navicat中需要移动id字段位置,可以将其他字段复制粘贴到id字段,再将id字段前的删除

4. 优缺点

自增主键业务主键
优点1. 索引所占空间小
2. 增删改查效率高
3.业务变化不需要更新主键
1. 保证业务逻辑的完整性
2. 安全性高
3.可以转移数据库
缺点无法转移数据库
1. 效率低
2.业务变化需要修改主键

仅作个人笔记,参考博主

  • https://www.cnblogs.com/lanqi/p/10185172.html
  • https://blog.csdn.net/hao_0514
  • 百度词条
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆羽飘扬

如果有用,请支持一下。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值