我刚刚交给了一个对我来说有点奇怪的数据库架构。数据库位于Soap Web服务后面,我注意到所有表ID都是十六进制格式的字符串
例如:0x1D283F
我将不得不将数据复制到MySQL数据库中。我从来没有使用过Hex作为ID,所以我不知道这是一个好主意/坏主意,或者无关紧要。我猜测自动增量在这里不起作用,这让我觉得这将是一个坏主意。
我可以将它们转换为整数,或者将它们保持原样,但其含义是什么。
答案 0 :(得分:7)
首先,数字是“十六进制”还是“十进制”只是外部表示的问题,它不会改变存储格式。使用数字字符串作为数据库索引显然效率低下,但可能会阻止某些数据库功能和优化。
因此,将十六进制字符串转换为普通整数并将它们用作数据库索引,你会没事的。
答案 1 :(得分:3)
从广义上讲,你希望你的主键没有意义,而且(显然)是唯一的。十六进制只是表示数字的一种方式 - 在下面,它仍然是一个整数。所以,在存储到DB之前我会转换为int。
更大的问题是 - 你确定它们是独一无二的吗?如果没有,您不能将它们用作主键....
答案 2 :(得分:2)
这是一个坏主意。使用整数键,SELECT会更快。在某些情况下使用字符串键可能有好处,但使用存储为字符串作为键的数值只是愚蠢。