【发布时间】:2010-10-05 12:25:09
【问题描述】:
我正在开发一个应用程序,该应用程序将实现一个十六进制值作为业务键(除了作为主键的自动增量字段),类似于 Gmail 中的 URL id。我将向列添加一个唯一约束,最初考虑将值存储为 bigint 以避免搜索 varchar 字段,但想知道如果该字段是唯一的,是否有必要这样做。
内部连接将使用自动增量字段完成,十六进制值将在 where 子句中用于过滤。
将值简单地存储为 varchar(x) 或 char(x) 会产生什么样的性能影响,而不是在进行与十六进制之间的转换以将值存储为整数数据库?是否值得增加额外的复杂性?
我对少量行 (50k) 进行了快速测试,并获得了相似的搜索结果时间。如果存在很大的性能问题,它是线性的还是指数的?
我使用 InnoDB 作为引擎。
【问题讨论】:
标签: mysql database-design