2009-05-03 32 views
7

我正在使用相對較大的DB表(700K行)處理項目。用於大型表的MySQL主鍵列類型

錯誤,我在設計數據庫模式時做出的。 當行數增加時,我必須增加ID的列類型bigint(x)。

現在是bigint(44)。 我害怕設置高x值,因爲我認爲它會顯着降低性能。也許我錯了...

請幫我解決問題。

我可以設置什麼樣的列類型,忘記這個問題?

在數據庫模式設計領域我應該學什麼更好?

回答

13

當您創建一個列爲BIGINT(44)時,「44」是顯示寬度 - 它不會影響您可以存儲的值的範圍或檢索速度。

對於想要使用UNSIGNED的數字的自動遞增ID,例如, BIGINT(44) UNSIGNED。這會使值的範圍加倍並添加額外的約束,這通常是件好事。

一個無符號的INT將存儲多達4,294,967,295 一個無符號BIGINT將存儲多達18,446,744,073,709,551,615 - 你不會很快填補。

你不會說你的最大ID有多快 - 如果你沒有插入多行,那麼你應該堅持使用UNSIGNED INT,因爲它佔用的空間更少。

1

我想任何主鍵默認都是無符號的。在任何情況下,對主鍵使用負數都是最不滿意的,並且會破壞內容。

+0

請問你能更具體嗎? 「打破東西」非常模糊。究竟是什麼突破? – Nobody 2012-08-29 22:17:35