mysql 字符串主键效率,字符串作为主键的性能损失?

2023-10-27

What would be the performance penalty of using strings as primary keys instead of bigints etc.? String comparison is much more expensive than integer comparison, but on the other hand I can imagine that internally a DBMS will compute hash keys to reduce the penalty.

An application that I work on uses strings as primary keys in several tables (MySQL). It is not trivial to change this, and I'd like to know what can be gained performance wise to justify the work.

解决方案on the other hand I can imagine that

internally a DBMS will compute hash

keys to reduce the penalty.

The DB needs to maintain a B-Tree (or a similar structure) with the key in a way to have them ordered.

If the key is hashed and stored it in the B-Tree that would be fine to check rapidly the uniqueness of the key -- the key can still be looked up efficiently. But you would not be able to search efficient for range of data (e.g. with LIKE) because the B-Tree is no more ordered according to the String value.

So I think most DB really store the String in the B-Tree, which can (1) take more space than numeric values and (2) require the B-Tree to be re-balanced if keys are inserted in arbitrary order (no notion of increasing value as with numeric pk).

The penalty in practice can range from insignificant to huge. It all depends on the usage, the number of rows, the average size of the string key, the queries which join table, etc.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql 字符串主键效率,字符串作为主键的性能损失? 的相关文章

  • Python 之 进阶 学习

    学习 Python 之 进阶学习 一切皆对象 1 变量和函数皆对象 2 模块和类皆对象 3 对象的基本操作 1 可以赋值给变量 2 可以添加到集合中 3 可以作为函数参数 4 可以作为函数返回值返回 4 object type class之
  • 【Node.js实战】一文带你开发博客项目之Express重构(初始化环境,处理 session,连接 redis)

    个人简介 个人主页 前端杂货铺 学习方向 主攻前端方向 也会涉及到服务端 个人状态 在校大学生一枚 已拿多个前端 offer 秋招 未来打算 为中国的工业软件事业效力n年 推荐学习 前端面试宝典 Vue2 Vue3 Vue2 Vue3项目实
  • 嵌入式软件的“验证”与“确认”傻傻分不清楚?别担心,7分钟让你读懂!

    测试自动化如何加速软件验证和软件确认 确保嵌入式软件的正确操作 质量 安全性和保障是嵌入式系统软件活动的重要组成部分 在很大程度上 团队通过软件测试以及整个开发过程中的分析 可追溯性 文档等来完成此任务 关键安全软件具有严格的验证和确认方法
  • select标签重复选中同一option时无法触发change事件的解决方法,option点击事件无效的替代方案,兼容老版IE

    笔者最近遇到这么一个问题 点击下拉框中某一个选项时弹出二级界面 但重复点击同一个下拉框选项就无法触发了 方法一 请教一位同事得到的方法 在谷歌等浏览器上是好使的 也比较简单 效果如图 思路就是 既然重复点一个选项无效 咱们就另加一个隐藏的选
  • 赋值表达式出现报错:expression must be a modifiable lvalue

    问题 我在一个类的cpp文件中 修改一个成员函数 在函数中进行对私有成员变量total torque thrust 的赋值操作 但是却报了如下错误 no operator matches these operands 或者 expressi
  • HTML附加功能实现(标签栏图表修改,发邮件,使用矢量图库)

    网页标签栏图标修改 在html文件的标签中使用标签即可设置标签栏角标 gt 超链接发送邮件 a href 发送邮件 a 使用icon矢量图 在阿里巴巴矢量图库 http www iconfont cn 搜索需要的图标 将选中的图标添加到购物
  • 通过DOCKER OVERLAY2 目录名查找容器名和容器ID

    有时候经常会有个别容器占用磁盘空间特别大 这个时候就需要通过docker overlay2 目录名查找对应容器名 1 首先进入到 var lib docker overlay2 目录下 查看谁占用的较多 du s sort rn more
  • 【ISP】色温

    1 黑体 任何物体都具有不断辐射 吸收 反射电磁波的性质 辐射出去的电磁波在各个频率上是功率不同的 也就是具有一定的谱分布 这种谱分布与物体本身的特性及其温度有关 因而被称之为热辐射 为了研究不依赖于物质具体物性的热辐射规律 物理学家们定义
  • python实现地址经纬度转换爬虫

    给大家分享一下地址转换为经纬度的爬虫 打开网址https jingweidu 51240 com 随便在输入框输入一个地址 接下来打开开发者模式 点network刷新页面检查所要的内容 第一条链接就是我们要的地址 复制下来就行 接下来就上代
  • R语言练习题答案(3)

    关注公众号凡花花的小窝 含有更多更全面的计算机专业编程考研相关知识的文章还有资料 代码 3 19 使用subset函数选取数据 df1 lt data frame name c aa bb cc age c 20 29 30 sex c f
  • QT读取文件夹下的特定文件

    话不多说 直接上代码 个人理解的注释 参考就行 1 选择目录 获取目录下文件的绝对路径 QString filepath QFileDialog getExistingDirectory this QStringLiteral 选择目录 F
  • 天猫推荐算法团队的那些事儿

    天猫技术部算法组是一个相对比较新的团队 刚刚成立一年 目前有10个算法工程师和5个开发工程师 这个团队所负责的内容是天猫上的数十个推荐产品 这些推荐产品帮助消费者找到他们喜欢的东西 将用户跟商品匹配的路径缩短 当然对天猫平台来说 推荐算法的
  • linux使用之__setup关键字

    在Linux内核代码中经常会看到 setup 如下所示 setup nfsroot nfs root setup 这是一个宏 它的定义在include linux init h define setup str fn setup param
  • js 取色器和 颜色拾取工具

    取色器 input在html5中有新增了type color的属性有一个直接值的 取色器 加 拾色器 点击滴管进入取色 监听input事件追踪值的变化 input的value值会返回十六进制 所以写了一个内置conversion函数转成rg
  • 如何写出高效的软件测试用例?微信朋友圈动态发送为例

    编写一份好的测试用例需要 充分的需求分析能力 理论及经验加持 但这并不意味着 没测试经验 分析能力弱就不能写好用例 还是有方法可循的 作为混迹测试职场 10 年的老人 给大家分享一些用例编写的心得 接下来我会从以下几个方面展开来讲 测试用例
  • QT 创建并调用 动态链接库Dll

    QT操作动态链接库 自定义目录 QT操作动态链接库 1 新建动态链接库 2 调用动态链接库 为了提高代码的复用性 实现模块化开发 需要对一些常用函数进行封装 可以通过调用共享库的方式实现 本教程以Qt Creater编译器为例 创建并调用动
  • error: undefined reference to `user::on_pushButton_clicked()‘

    qt中报这个错误是因为声明了函数但未进行实现 在 h文件中将其删除即可
  • 如何在同一台计算机上安装多个Java版本

    一段时间以前 我写了一篇文章 用示例解释Java Lambda表达式 但是我很容易浏览Java 8 因为我在项目中使用了Java 8 并且允许我安装和使用它 但是在我当前的项目中 我们仍在使用Java 8 现在我想升级自己并学习Java 1
  • CC254X 蓝牙博文收集

    BLE CC2541之添加特征值 BLE CC2541之发现多个特征值句柄 BLE CC2541之配对与绑定 CC2640R2F之配对绑定与解除绑定篇 IoT产品之蓝牙设计 BLE CC2541 BLE CC2640

随机推荐

  • React组件之间如何通信?

    React组件通信就是值组件通过某种方式来传递信息以达到某个目的 方式 父组件向子组件传递信息 由于react数据流动是单向的 父组件在调用子组件时 只需要在子组件标签内传递参数 子组件通过props属性接收 function EmailI
  • Redis Java 客户端工具 - Lettuce框架介绍

    Redis Java 客户端 Lettuce 今天学习下Redis Java客户端开源项目 Lettuce Lettuce支持同步 异步通信的方式 API调用 也支持响应式编程API 包括发布 订阅消息 高可用性服务部署架构 开始之旅 Ma
  • 【Windows打开OpenSSH服务端支持】

    文章目录 概要 整体架构流程 技术细节 1 安装OpenSSH服务端 2 设置自启动 3 启动服务 4 资源监视器 修改配置 防火墙 小结 概要 项目需要装了一个Windows Server 2022 由于不能亲自到场调试 我就打开了Ope
  • 【数据结构】检查两棵树是否相同

    问题 给定两个二叉树 编写一个函数来检验它们是否相同 如果两个树在结构上相同 并且节点具有相同的值 则认为它们是相同的 示例 1 输入 1 1 2 3 2 3 1 2 3 1 2 3 输出 true 示例 2 输入 1 1 2 2 1 2
  • python: n个人围成一圈

    题目 n个人围成一圈 编号1 2 3 n 从1开始报数 1 3循环报数 报到3的人退出 则最后留下来的人是几号 有n个人围成一圈 顺序排号 从第一个人开始报数 从1到3报数 凡报到3的人退出圈子 问最后留下的是原来第几号的那位 n int
  • PWM 互补两个引脚输出相同的PWM波形 CH1 和CH1N

    将互补CH1N 输出pwm与CH1输出相同的波形 TIM OCInitStructure TIM OCPolarity TIM OCPolarity Low 输出极性 TIM输出比较极性高 TIM OCInitStructure TIM O
  • 编程机器人考级证书有用吗_全国青少年机器人技术等级考试的证书有用吗?

    好多家长咨询全国青少年机器人技术等级考试的证书有用吗 含金量高吗 今天在这里给大家科普一下 大赛组织者是谁 全国青少年机器人技术等级考试是由中国电子学会发起的面向青少年机器人技术能力水平的社会化评价项目 而中国电子学会是工业和信息化部直属事
  • 大神之路-起始篇

    欢迎关注 WeiyiGeek 公众号 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 涉及 网络安全运维 应用开发 物联网IOT 学习路径 个人感悟 等知识 偷偷的告诉你哟 极客全栈修炼 微信小程
  • 为什么家里pm25比外面高_为什么男人总是对“外面的女人”格外心动?

    陈粒在 易燃易爆炸 的歌词中有唱到 想我冷艳 还想我轻佻又下贱 要我阳光 还要我风情不摇晃 爱我纯粹 还爱我赤裸不糜颓 图我情真 还图我眼波销魂 把一个男人 贪欲 的状态描写的淋漓尽致 想鱼和熊掌兼得 既想抱着白玫瑰 又想拎着红玫瑰 这个时
  • 因果图用例设计方法概念详解

    为什么么需要因果图 在黑盒测试中 等价类划分或边界值分析法只考虑了不同的输入和不同的输出之间的关系 但是如果是各个输入条件之间有很复杂的组合 这二种设计方法都很难用一个系统的方法进行描述 设计测试用例只能依靠测试人员主观的猜测或者分析 具有
  • 五大排序算法(C语言)

    一 插入排序 每次将一个待排序的记录按其关键字大小插入到前面已排序好的子序列中 直到全部记录插入完成 4 7 2 6 9 13 1 5 4 7 2 6 9 13 1 5 2 4 7 6 9 13 1 5 2 4 6 7 9
  • Timer.schedule方法的使用

    java util Timer定时器的常用方法如下 schedule TimerTask task long delay 延迟delay毫秒后 执行一次task schedule TimerTask task long delay long
  • Oracle insert 插入数据的几种方式

    1 insert 的单表插入 INSERT INTO
  • Leetcode 本地调试环境(C++)

    文章目录 二叉树调试 刷题时 经常需要本地调试 特此整理一下如何依照 LeetCode 的样式 输入测试用例以及打印结果 增强结果的可视性 二叉树调试 利用数组生成二叉树 这里以LeetCode第102题层序遍历为例 工具函数 TreeNo
  • SmartFusion从FPGA到ARM(十一)——CorePWM的使用

    文章目录 前言 IP核添加与配置 库函数简介 posedge和nededge 对齐方式 示例1 基本PWM生成 示例2 带相位差的PWM生成 PWM应用示例 系列教程 SmartFusion从FPGA到ARM系列教程 前言 CorePWM是
  • 贪心算法例题:2850商人小鑫

    Problem Description 小鑫是个商人 当然商人最希望的就是多赚钱 小鑫也一样 这天 他来到了一个遥远的国度 那里有着n件商品 对于第i件商品需要付出ci的价钱才能得到 当然 对于第i件商品 小鑫在自己心中有一个估价pi 代表
  • 无法解析的外部符号__imp__AlphaBlend@44

    使用Win32 API函数AlphaBlend编译时出现一个错误 无法解析的外部符号 imp AlphaBlend 44 解决办法是在使用得地方包含Msimg32 lib 具体是在文件头部添加代码 pragma comment lib Ms
  • 利用PyQt5制作本地音乐播放器

    介绍 本文是对之前的音乐播放器的一些改进和功能实现 只写了有变化的部分 具体部分请看上一篇博客 利用PyQt5和QSS制作本地音乐播放器 初稿 https blog csdn net weixin 44343083 article deta
  • PHP版今日头条算法面试题(持续更新)

    1 现在有一个字符串 你要对这个字符串进行 n 次操作 每次操作给出两个数字 p l 表示当前字符串中从下标为 p 的字符开始的长度为 l 的一个子串 你要将这个子串左右翻转后插在这个子串原来位置的正后方 求最后得到的字符串是什么 字符串的
  • mysql 字符串主键效率,字符串作为主键的性能损失?

    What would be the performance penalty of using strings as primary keys instead of bigints etc String comparison is much