爲什麼數字在數據庫中用作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