33

Google+ 的用户 ID 很长

104560124403688998123

(21 个字符),不能输入到 BIGINT 字段(非无符号)

对于此类 ID,您将使用哪种列类型?

我不认为 varchar 是个好主意

4

4 回答 4

20

如果 google id 的长度是可预测的,请使用 static char(length),在其上添加索引并创建(内部)整数主键。在您的应用程序内部,您将数据映射到整数主键。因此,如果有人通过 google id 进行搜索,您可以查找该 google id 的整数主键,并使用整数主键进行其余查询。

所以架构看起来像:

映射表:

id (integer) | google_id (char(length)) 

因此,如果您创建另一个表(如评论等),请使用主键id,如果您想查找某个 googleid 的所有评论,请先获取内部 id,然后加入评论。这样,您在具有可预测长度的静态索引 char 字段上只有一个查询条件,所有其他连接和查询都将使用整数键。

于 2011-07-29T11:23:10.053 回答
6

我会使用与 Facebook 相同的方法:varchar

于 2011-07-29T11:20:12.157 回答
5

我找不到谷歌的官方推荐,但我使用十进制 21,0可以正常工作。

于 2013-07-02T06:02:09.747 回答
1

在 appengine 上的 python 中,我使用 ndb.StringProperty 保存数据并使用正则表达式 \d{15} 进行验证,因此留出了一点余地。知道什么是真正的正则表达式来验证这个字段真是太好了

于 2013-10-30T19:16:50.737 回答