无意义自增主键id + 业务id(user_id), 比起单独的 主键id就是userID

来源:2-7 索引调优技巧3-覆盖索引

蓝色西西

2020-12-08 18:02:52

单体应用,为了以后分库分表考虑,使用了分布式ID,比如使用雪花id作为数据表主键id。
类似 34255342543656 3426789943656 3427799342543 这样增大但是不是连续递增的数字,作为主键id,会导致分页和索引查询性能下降吗。
有没有必要这样做,比如在user表等,加一个自增id放在最前面作为表的主键id,无意义。上面的雪花id改为user_id,用雪花id做业务id。这样分库分表会有问题吗。
请问增加 无意义自增主键id + 业务id(user_id), 比起单独的 主键id就是userID,这种方式好吗。


写回答

1回答

大目

2020-12-08

单体应用,为了以后分库分表考虑,使用了分布式ID,比如使用雪花id作为数据表主键id。
类似 34255342543656 3426789943656 3427799342543 这样增大但是不是连续递增的数字,作为主键id,会导致分页和索引查询性能下降吗。
……………………
一般认为这个影响很小,还是顺序io,不会下降。id不需要连续递增的。

有没有必要这样做,比如在user表等,加一个自增id放在最前面作为表的主键id,无意义。上面的雪花id改为user_id,用雪花id做业务id。这样分库分表会有问题吗。
请问增加 无意义自增主键id + 业务id(user_id), 比起单独的 主键id就是userID,这种方式好吗。
……………
这个不一定,有的团队确实会这么做,不过我个人不太喜欢。看你喜欢吧,都可以哦,我个人觉得必要性不大。

0

Java架构师-技术专家

千万级电商项目从0到100全过程,覆盖Java程序员不同成长阶段的核心问题与解决方案

2672 学习 · 5839 问题

查看课程