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