100W 数据量,数据库主键选择

2023-10-02 17:52:46 +08:00
 steelshadow39

本人学生,没有大型项目开发经验。问题描述如下,请教各位前辈。

  1. 数据描述:
    • 可能作为主键的两个属性示例:
      1. cpeName": "cpe:2.3:a:3com:3cdaemon:-:::::::*",
      2. cpeNameId": "BAE41D20-D4AF-4AF0-AA7D-3BD04DA402A7"
    • 数据量:100W 左右
  2. 数据库选用 MySQL ,innodb

我的想法是:cpeName 字段太长了,不适合作为主键; cpeNameid 和 UUID 差不多,作为索引查找和插入效率都很低。因为查询数据时绝大多数情况都会以 cpeName 作为查询条件,所以如果以自增 ID 作为主键,基本上很少用到 ID ,而且自增 ID 和其他列毫无关联关系,最终还是需要在 cpeName 上建索引。

感谢各位前辈指点。

3330 次点击
所在节点    数据库
25 条回复
yrj
2023-10-03 10:50:13 +08:00
不说才 100w 数据的事情,正确做法是用自增 id 做主键,可以让数据排列更密实
066aQg6jasP39ov4
2023-10-03 12:16:09 +08:00
小菜鸡表示,你要说主键,那我只能说整数型自增主键,没有的话就新增一列
Flourite
2023-10-03 12:22:40 +08:00
1. 所有二级索引都会包含主键,不建议使用 cpeName 做主键
2. 嫌 cpeName 太长可以用 hash 索引
RangerWolf
2023-10-03 22:01:45 +08:00
推荐看看阿里的那个 Java 开发手册,里面有专门 MySQL 的章节,非常值得学习。
spediacn
2023-11-10 09:21:22 +08:00
uuid 用二进制存效率可比字符串高多了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/978599

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX