2011-01-22 12 views
35

Używałem int (10) i właśnie zauważyłem, że Wordpress używa biginta (20) - Czym różni się użycie biginta (20) i int (10) dla przyrostu auto id? Którego powinienem użyć w kolumnie "id"?MySQL: bigint Vs int

`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 

Vs

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, 

Dzięki.

+0

pytanie brzmi, czy jest mniej wydajnych: http://stackoverflow.com/questions/9376610/bigint-mysql-performance-compared-to-int – rubo77

Odpowiedz

56

Różnica polega wyłącznie na maksymalnej wartości, które mogą być przechowywane (18,446,744,073,709,551,615 dla bigint (20) oraz 4294967295 dla int (10), wierzę) , zgodnie ze szczegółami na stronie podręcznika MySQL Numeric Types.

Nawiasem mówiąc, użycie (20) i (10) jest w dużej mierze nieistotne, chyba że używasz ZEROFILL. (tzn .: Nie zmienia to faktycznie rozmiaru zapisanego numeru - to wszystko zależy od typu).

Jednakże, pod względem praktycznym, należy zauważyć, że prawdopodobnie nie trafisz żadnego z tych ograniczeń wkrótce, chyba że jesteś aktywnym blogerem.

+6

Należy zauważyć, że bigint zużywa 8 bajtów składowania vs 4 bajty dla int. Podpis (domyślnie mysql) int pozwala na wartości> 2 miliardy; w związku z tym zdecydowana większość czasu jest doskonałym kandydatem do kolumny id. Oczywiście, chyba że masz do czynienia z ogromnymi zestawami rekordów, w których typ kolumny/pamięć jest problemem, bigint vs int nie jest strasznie ważny – virtualeyes

9

Jedyna różnica to zakres typu. INT ma długość 32-bitów, natomiast BIGINT ma długość 64-bitową, dlatego może przechowywać znacznie większe numery, takie jak 123456789123456789 (które nie mogą być przechowywane jako INT).

Oto pełna lista MySQL typów całkowitych: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html