【问题标题】:Fastest way to retrieve unique record in MySQL: string vs float vs 2 ids在 MySQL 中检索唯一记录的最快方法:string vs float vs 2 ids
【发布时间】:2012-02-27 04:26:36
【问题描述】:
我需要检查(可能)大型数据库(数百万条记录)中的特定记录是否存在。
我可以选择唯一标识记录:
- 2 个整数(例如:231321 和 312309)
- 1 个浮点数(两个整数的组合。例如:231321.312309)
- 1 个字符串(两个整数的组合。例如:'231321@312309')
这三个选项之一是否比其他选项更好?
谢谢!
【问题讨论】:
标签:
mysql
string
performance
floating-point
integer
【解决方案1】:
使用 2 个整数。
理由:
- 根据实际整数范围,您可能无法存储 2 个整数
在单个浮点数中不损失精度。
- 字符串只是浪费空间。
- 对于浮点数和字符串,如果需要,您将无法在第二个整数上建立索引(因此无法有效地搜索)。
- 此外,还有一个关于 atomicity 的哲学论证,违反它实际上违反了第一范式。
【解决方案2】:
好吧,我不会仅仅因为它占用更多空间并且需要比较更多数据而使用该字符串。我认为您选择哪个数字选项并不重要。只要确保在字段上抛出一个 UNIQUE INDEX 就可以了。