我的工作将要实施的十六进制值作为业务键(除了自动增量字段作为主键)类似于在Gmail中看到的URL ID的应用。我将为该列添加一个唯一的约束,并且最初考虑将该值存储为bigint以避开搜索varchar字段,但是想知道如果该字段是唯一的,那么这是否是必需的。MySQL的性能VS独特BIGINT
内部连接将使用自动递增现场完成和十六进制值将在where子句过滤中使用。
简单地将值存储为varchar(x),或者将char(x)存储在额外的工作中,以执行向和从十六进制的转换以将值存储为整数在数据库中?这值得额外的复杂性吗?
我做了少量的行(50K)的快速测试和有类似的搜索结果的时间。如果存在很大的性能问题,它会是线性的还是指数级的?
我使用InnoDB作为引擎。
就个人而言,我真的尽力避免将用户暴露给用户界面中的GUID。即使是一个URL线。但是,我会建议在内部使用它们,并通过使用会话或使用特定的代码来截断它们以显示*。这样&item = 1是我展示的第一个项目...我在内部拉* GUID *。 – Godeke 2009-02-05 00:08:51