mysql 主键 汉字_关系型数据库,主键用汉字性能会怎样?

本文探讨了在关系型数据库中,使用汉字作为主键与使用数字主键的性能差异。通过比较两种不同数据表结构在查询关键字与文章关系时的SQL语句,展示了汉字主键在多表关联查询时可能带来的复杂性。当需求扩展到获取文章关键字及其拼音时,使用数字主键的查询显得更为直接。文章提出了问题,寻求更优的设计方案。
摘要由CSDN通过智能技术生成

[使用汉字word做主键数据表结构]

[keywords] 关键字表

word (PK)

id (自增长标识)

[articles] 文章表

id (PK)(自增长标识)

title

[articleskeywordsrelates] 关键字与文章的关系表

articleid 文章ID(PK) 联合主键

keyword 关键字(PK) 联合主键

获取 文章id 为5 的所有对应的关键字的时候是这样

select keyword from articleskeywordsrelates where articleid=5

[使用数字标识做主键数据表结构]

[keywords] 关键字表

word

id (PK)(自增长标识)

[articles] 文章表

id (PK)(自增长标识)

title

[articleskeywordsrelates] 关键字与文章的关系表

articleid 文章ID(PK) 联合主键

keywordid 关键字ID(PK) 联合主键

获取 文章id 为5 的所有对应的关键字的时候是这样

select word from keywords

where

id in(select keywordid from articleskeywordsrelates where articleid=5)

* keywords 数据量 和 articles 数据量差不多

如果后期扩展 keywords 表,增加一个 pinyin 字段

[keywords] 关键字表

word

id (自增长标识)

pinyin

当需求变更为

获取 文章id 为5 的所有对应的关键字的pinyin 和关键字 的时候

使用汉字主键是:

select * from keywords where word in(select keyword from articleskeywordsrelates where articleid=5)

使用数字主键是:

select * from keywords where id in(select keywordid from articleskeywordsrelates where articleid=5)

唉,还是很麻烦啊

多表关联很麻烦,谁有好的设计??

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值