为什么数字在数据库中被用作ID(想想主键+ AI)而且几乎到处都是字母而不是字母? 有10位数字,而英文字母有26位字母。
假设每个字母/数字都有一个位置。 98 需要两个点,而 1202 需要四个等等。在四个点中,您可以存储多达10 000个ID,但如果您使用字母代替,则可以存储尽可能多的ID具有相同数量的斑点的456 976个ID。如果你使用区分大小写,甚至更多。 这差不多50倍。
我确实认识到这对普通用户来说无关紧要,但为什么不是使用字母而不是数字作为ID的大型数据库呢?
答案 0 :(得分:4)
您为数字值混淆了字符。
使用整数(例如32位整数)作为数据类型的ID列每个行只需要4个字节。它也将是内存中的本机值,可以在CPU中本地执行(作为二进制表示)。
这对于字符来说是不一样的 - 即使假定使用ASCII(8位),当你超过4个字符时,你正在使用更多的空间。您还需要在值之间进行转换,以便进行有效的比较。
答案 1 :(得分:2)
数字打包更好。您认为因为数字以十进制显示,它们存储为十进制,但它们实际上是二进制的。针对计算机进行了优化:)。
如果要表示26个字母中的一个,则需要2个 5 二进制数字。每个5位块丢失32-26 = 8个可能的数字。
答案 2 :(得分:1)
没有严格的规则说你不能在数据库中使用字母数字文件作为ID。人们一直这样做。
至于为什么使用数字更为常见......
答案 3 :(得分:0)
因为计算机只能使用数字。甚至字符也被计算机视为数字。
此外,使用字符串的效率远低于数字。
任何小于4,294,967,296(2 ^ 32)的数字只能存储在4个字节中,而即使是 5 字符(并且每个字符占用一个字节),字母字符串也只允许11,881,376种可能性。
计算机不会在一个字节中记录基数为10的数字。每个字节实际上可以容纳256个不同的可能值。