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

236 天前
 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 上建索引。

感谢各位前辈指点。

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

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

https://www.v2ex.com/t/978599

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

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

© 2021 V2EX