我正在使用相對較大的DB表(700K行)處理項目。用於大型表的MySQL主鍵列類型
錯誤,我在設計數據庫模式時做出的。 當行數增加時,我必須增加ID的列類型bigint(x)。
現在是bigint(44)。 我害怕設置高x值,因爲我認爲它會顯着降低性能。也許我錯了...
請幫我解決問題。
我可以設置什麼樣的列類型,忘記這個問題?
在數據庫模式設計領域我應該學什麼更好?
我正在使用相對較大的DB表(700K行)處理項目。用於大型表的MySQL主鍵列類型
錯誤,我在設計數據庫模式時做出的。 當行數增加時,我必須增加ID的列類型bigint(x)。
現在是bigint(44)。 我害怕設置高x值,因爲我認爲它會顯着降低性能。也許我錯了...
請幫我解決問題。
我可以設置什麼樣的列類型,忘記這個問題?
在數據庫模式設計領域我應該學什麼更好?
當您創建一個列爲BIGINT(44)
時,「44」是顯示寬度 - 它不會影響您可以存儲的值的範圍或檢索速度。
對於想要使用UNSIGNED
的數字的自動遞增ID,例如, BIGINT(44) UNSIGNED
。這會使值的範圍加倍並添加額外的約束,這通常是件好事。
一個無符號的INT將存儲多達4,294,967,295 一個無符號BIGINT將存儲多達18,446,744,073,709,551,615 - 你不會很快填補。
你不會說你的最大ID有多快 - 如果你沒有插入多行,那麼你應該堅持使用UNSIGNED INT
,因爲它佔用的空間更少。
我想任何主鍵默認都是無符號的。在任何情況下,對主鍵使用負數都是最不滿意的,並且會破壞內容。
請問你能更具體嗎? 「打破東西」非常模糊。究竟是什麼突破? – Nobody 2012-08-29 22:17:35