数据库中 id 字段存在的必要性

2015-08-22 13:57:56 +08:00
 qyz0123321

在公司设计数据库的时候,有人提出来了在设计数据库的时候直接使用中文名字作为主键,表之间的关系也直接用中文名字作为主键(中文名字不重复)。
这样做的好处当然是数据库方便易读,易于理解,但是这样做势必会保证搜索速度下降(我是这么认为的),增大数据库的大小。
但是不知道现在的 mysql , mssql 数据库对中文做的优化能不能抵消搜索的劣势?有没有使用中文作为主键的场景?
刚刚毕业学生,求轻喷。。

3006 次点击
所在节点    数据库
34 条回复
haogefeifei
2015-08-22 14:08:06 +08:00
优化某字段的查询速度,加索引啊。。。
loading
2015-08-22 14:08:14 +08:00
我的 sessionId 就是用数据库的 id ,每次都要验证,这还是能快很多的。
est
2015-08-22 14:09:20 +08:00
innodb 来说,你不弄 id 也会有个隐式 PK 的。

中文主键没啥性能问题,都是二进制数据。
powergx
2015-08-22 14:09:22 +08:00
考虑以后有改名字的需求怎么办
qyz0123321
2015-08-22 14:28:04 +08:00
@haogefeifei 嗯,目前查询中文的字段的确是加了索引的,但是找到对应的 id 再去找其他表中对应的字段,用数字的速度应该比中文快很多吧。
qyz0123321
2015-08-22 14:29:46 +08:00
@est soga ,原来 Innodb 还会内置一个隐藏的 PK 。从单表的性能上来说,那查询那就没啥区别了啊。。
qyz0123321
2015-08-22 14:30:29 +08:00
@powergx 这个需求的确要考虑。。。一改全都要改了。。
akira
2015-08-22 15:11:48 +08:00
个人习惯所有表里面的自增字段都是 id ,这样不会乱也好记

PS : 字段名尽量避免用中文是个好习惯。
babyname
2015-08-22 15:14:26 +08:00
comment 是干嘛的?中文易于理解?那是团队水平不行。
iamppz
2015-08-22 15:19:14 +08:00
MySQLdump 按表名备份会悲剧,不知道现在怎么样了
iamppz
2015-08-22 15:19:58 +08:00
中文字段用 MySQLdump 按表名备份会悲剧,不知道现在怎么样了
qyz0123321
2015-08-22 15:26:59 +08:00
@babyname 呃,不是字段名,是字段里的值,字段名当然是英文了。
coolzjy
2015-08-22 15:39:46 +08:00
id 当然不是必须的,不考虑性能的情况下满足唯一和固定两个条件的字段都能拿来做主键,比方说身份证号
qyz0123321
2015-08-22 16:51:27 +08:00
@coolzjy 嗯,的确,主键的定义被玩坏了。。
qyz0123321
2015-08-22 16:59:26 +08:00
@haogefeifei
@loading
@est
@powergx
@coolzjy

突然想到,要是表做 inner join 的时候,中文是不是比 id 要慢呢?
sunmonster
2015-08-22 17:03:53 +08:00
数据库存在这么多年了,全国成千上万的企业在用,我是重来没见过用中文做主键的,为什么没有人这么用呢,还是说你思维巧妙,第一个想到用中文来做主键索引?有的时候折腾一下可以,千万不要在生产环境实践,不然会被问候全家的。
qyz0123321
2015-08-22 17:23:27 +08:00
@sunmonster 呃。。只是突发其想讨论一下合理性和性能之类的。。求轻喷。。
haogefeifei
2015-08-22 17:29:35 +08:00
没有作死用过中文做主键的表示不说话。。。。 中文字段例如用户名什么的加个唯一约束就好。。。。
em70
2015-08-22 18:05:39 +08:00
只要你能保证每条记录的唯一性,不要 ID 字段也行啊。做不到唯一的话, ID 字段自增是最方便的
jiangzhuo
2015-08-22 18:19:12 +08:00
中文名字不会重复??——李超表示理解不了

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

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

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

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

© 2021 V2EX