Mysql 我应该在客户端代码中存储什么作为索引?
我正在使用谷歌应用程序引擎和存储用户。以前,我使用MySQL为我的userId字段自动递增int,但现在GAE为我存储的每个新实体自动生成一个键,例如Mysql 我应该在客户端代码中存储什么作为索引?,mysql,database,google-app-engine,Mysql,Database,Google App Engine,我正在使用谷歌应用程序引擎和存储用户。以前,我使用MySQL为我的userId字段自动递增int,但现在GAE为我存储的每个新实体自动生成一个键,例如g5kZXZ-aGVsbG93b3JsZHIKCxIEVXNlchgNDA,但它们也自动生成一个自动递增的ID int 我应该在客户端代码中使用哪一个作为用户ID存储?使用GAE生成的长键有什么好处吗?或者使用小int-ID在性能和查找方面是一样的吗?两者之间有什么优势吗,或者说实际上没有什么区别 编辑:对不起,我的问题不够清楚。我的问题是: 这与
g5kZXZ-aGVsbG93b3JsZHIKCxIEVXNlchgNDA
,但它们也自动生成一个自动递增的ID int
我应该在客户端代码中使用哪一个作为用户ID存储?使用GAE生成的长键有什么好处吗?或者使用小int-ID在性能和查找方面是一样的吗?两者之间有什么优势吗,或者说实际上没有什么区别
编辑:对不起,我的问题不够清楚。我的问题是:
这与长度无关,但有了查找键是否比没有它提前了一步?因为如果我想查找一个用户,我必须通过电子邮件查找他,但是现在我有了“表”中该行的键,这会给我带来任何好处吗?任何一个都可以,使用长字符串或短字符串来标识用户之间没有性能差异。请记住,生成的实体ID不能保证是单调递增的值。您是在说使用还是其他什么?我将通过他们的文档了解这两者的长期计划是什么,以及如何使用它们。选择一个看起来最长且不变的。好吧,这不是长度的问题,但如果有钥匙能让我比没有钥匙早一步吗?因为如果我想查找一个用户,我必须通过电子邮件来查找他,但是现在我有了“表”中该行的键,这会给我带来什么好处吗?你可能会想通过键来查找,因为数据存储的API为此进行了优化。在高性能场景中,维护自动递增ID也是低效的,因此您可能需要研究删除它。好的,很好。那么,如果我已经有了钥匙,我怎么能快速取回呢?目前我正在做的是
users=User.all()users.filter(“userEmail=,userEmail)User=users.get()
是否只是通过另一个过滤器?如果您有密钥,您可以调用db.get(key)
——无需查询,它接受多个键来获取多个实体。好的,还有最后一件事,当我在这里的时候:前4列是由系统生成的。密钥名称代表什么?去掉字段ID(不确定是否可能)会减少写操作的数量吗?