【发布时间】:2010-11-29 21:29:00
【问题描述】:
我要将字符串转换为整数以按性能优化分组。
你们觉得这个想法怎么样?
如果适用,那么 PHP 中是否有内置函数可以将字符串转换为唯一整数?
【问题讨论】:
-
您可以使用 crc32() 函数来创建字符串的唯一整数。或者使用 md5 然后从十六进制转换回base-10。
-
如果数据只是整数,你为什么要把它存储在字符串列中?您是否衡量过性能成本或收益?
-
@Mauris:CRC-32 只为您提供为每个字符串生成唯一整数的合理概率 - 它绝不是 100% 确定性的。相当小的样本可能会发生冲突——不同的字符串散列到相同的 CRC-32 值。使用更大的散列 - MD5(128 位而不是 32 位)或 SHA-1(160 位)或 SHA-256(错误,你相信 256 位) - 更有可能是唯一的,但转换成本要高得多。
-
@Mauris:我在 Olson 数据库中的时区名称上使用了 CRC 算法,并在该集合中遇到了冲突。回想起来,我现在不确定我是在尝试 16 位还是 32 位 CRC,但在数百个名称的样本中,我遇到了冲突。
标签: php database optimization group-by