为什么数字在数据库中用作ID(认为主键+ AI),几乎到处都是字母而不是字母? 有10个数字可用,而英文字母有26个字母。为什么数字用作识别而不是字母?
假设每个字母/数字都有一个位置。 需要两个点,需要四个等。在四个点中,最多可以存储10000个ID,但如果使用字母代替,则可以使用相同数量的点存储多达456个976 ID 。如果您使用区分大小写,则更多。 这差不多是50倍。
我的确意识到这对普通用户来说可能并不重要,但为什么不使用字母而不是数字作为ID的大型数据库呢?
为什么数字在数据库中用作ID(认为主键+ AI),几乎到处都是字母而不是字母? 有10个数字可用,而英文字母有26个字母。为什么数字用作识别而不是字母?
假设每个字母/数字都有一个位置。 需要两个点,需要四个等。在四个点中,最多可以存储10000个ID,但如果使用字母代替,则可以使用相同数量的点存储多达456个976 ID 。如果您使用区分大小写,则更多。 这差不多是50倍。
我的确意识到这对普通用户来说可能并不重要,但为什么不使用字母而不是数字作为ID的大型数据库呢?
您正在混淆字符的数字值。
一个使用整数(比如一个32位整数)作为数据类型的ID列只需要4个字节每行行。它也是内存中的本地值,可以在CPU中以本地方式执行(作为二进制表示形式)。
这与字符不同 - 即使假设使用ASCII(8位),当您超过4个字符时,您使用的空间也会更多。您还需要在值之间进行转换才能进行有效的比较。
因为电脑只能使用数字。甚至字符也被计算机视为数字。
此外,使用字符串的效率远低于数字。
任何小于4,294,967,296(2^32)的数字只能存储在4个字节中,而即使是一个字符(并且每个字符占用一个字节),字母串只允许11,881,376种可能性。
电脑不报道一个字节的基数为10的数字。每个字节实际上可以保存256个不同的可能值。
数字包装更好。你猜这是因为数字是以十进制显示的,它们是以十进制存储的,但它们确实是二进制的。针对电脑进行了优化:)。
如果你想要代表26个字母之一,你需要2 二进制数字。你丢失32-26 =每块5位可能的数字。
有没有硬性规定,说你不能在数据库中使用字母数字文件作为ID。人们一直这样做。
至于为什么它是更常见的是使用数字...
编辑,使问题更容易理解(包括标签),将不胜感激。英语不是我的母语,因此我觉得有时候很难让自己明白。 – Zar 2012-07-11 18:48:26