数据库,主键为何不宜太长长长长长长长长?
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,回答星球水友提问:沈老师,我听网上说,MySQL数据表,在数据量比较大的情况下,主键不宜过长,是不是这样呢?这又是为什么呢?这个问题嘛,不能一概而论:(1)如果是InnoDB存储引擎,主键不宜过长;(
千家信息网最后更新 2025年01月22日数据库,主键为何不宜太长长长长长长长长?沈老师,我听网上说,MySQL数据表,在数据量比较大的情况下,主键不宜过长,是不是这样呢?这又是为什么呢? 这个问题嘛,不能一概而论: (1)如果是InnoDB存储引擎,主键不宜过长; (2)如果是MyISAM存储引擎,影响不大; 先举个简单的栗子说明一下前序知识。 假设有数据表: 其中: (1)id是主键; (2)name建了普通索引; 假设表中有四条记录: 如果存储引擎是MyISAM,其索引与记录的结构是这样的: (1)有单独的区域存储记录(record); (2)主键索引与普通索引结构相同,都存储记录的指针(暂且理解为指针); 画外音: (1)主键索引与记录不存储在一起,因此它是非聚集索引(Unclustered Index); (2)MyISAM可以没有PK; MyISAM使用索引进行检索时,会先从索引树定位到记录指针,再通过记录指针定位到具体的记录。 画外音:不管主键索引,还普通索引,过程相同。 InnoDB则不同,其索引与记录的结构是这样的: (1)主键索引与记录存储在一起; (2)普通索引存储主键(这下不是指针了); 画外音: (1)主键索引与记录存储在一起,所以才叫聚集索引(Clustered Index); (2)InnoDB一定会有聚集索引; InnoDB通过主键索引查询时,能够直接定位到行记录。 但如果通过普通索引查询时,会先查询出主键,再从主键索引上二次遍历索引树。 回归正题,为什么InnoDB的主键不宜过长呢? 假设有一个用户中心场景,包含身份证号,身份证MD5,姓名,出生年月等业务属性,这些属性上均有查询需求。
最容易想到的设计方式是: 此时的索引树与行记录结构如上: 身份证号id_code是一个比较长的字符串,每个索引都存储这个值,在数据量大,内存珍贵的情况下,MySQL有限的缓冲区,存储的索引与数据会减少,磁盘IO的概率会增加。 画外音:同时,索引占用的磁盘空间也会增加。 此时,应该新增一个无业务含义的id自增列: 如此一来,有限的缓冲区,能够缓冲更多的索引与行数据,磁盘IO的频率会降低,整体性能会增加。 总结 (1)MyISAM的索引与数据分开存储,索引叶子存储指针,主键索引与普通索引无太大区别; (2)InnoDB的聚集索引和数据行统一存储,聚集索引存储数据行本身,普通索引存储主键; (3)InnoDB不建议使用太长字段作为PK(此时可以加入一个自增键PK),MyISAM则无所谓;
希望解答了这位水友的疑问。
回答星球水友提问:
t(id PK, name KEY, sex, flag);
1, shenjian, m, A
3, zhangsan, m, A
5, lisi, m, A
9, wangwu, f, B
最容易想到的设计方式是:
身份证作为主键
其他属性上建立索引
user(id_code PK,
id_md5(index),
name(index),
birthday(index));
id_code聚集索引,关联行记录
其他索引,存储id_code属性值
以id自增列为聚集索引,关联行记录
其他索引,存储id值
user(id PK auto inc,
id_code(index),
id_md5(index),
name(index),
birthday(index));
希望解答了这位水友的疑问。
索引
存储
数据
普通
指针
属性
画外音
结构
身份
查询
引擎
磁盘
定位
缓冲
相同
业务
情况
数据表
有限
缓冲区
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
WEB聊天软件开发
原神国际服资料能更改服务器吗
虹口区品牌软件开发业务流程
政治学数据库
带数据库的触摸屏
python软件开发难吗
单位2021网络安全工作报告
ema药物数据库
通州网络安全产业园轨道交通
软件开发原型模型
星环数据库插入数据
网络安全备案需要什么
数据库主文件名在哪里
北京软件开发价格参考价格
数据库和显卡区别
羽浪网络技术
云丰云服务器是什么
大数据日志审计服务器
笨猴网络技术
网络安全与信息排查
最新mtproxy服务器
泰拉瑞亚怎么找服务器id
今年是第几届网络安全
衡南网络安全宣传
安全狗服务器规则
虚拟服务器安全防护
企业网络安全防护解决的问题
酷播影视服务器
oracle 查询没数据库
大数据日志审计服务器