2009-05-03 5 views
7

Sto lavorando al progetto con una tabella DB relativamente grande (righe 700K).Tipo di colonna chiave primaria MySQL per tabelle grandi

Errore, l'ho creato durante la progettazione dello schema DB. Quando le file aumentavano, dovevo aumentare il tipo di colonna ID bigint (x).

Ora è bigint (44). Ho paura di impostare un valore x elevato perché pensavo che potesse rallentare significativamente le prestazioni. Forse ho torto ..

Per favore aiutami a risolvere il problema.

Quale tipo di colonna è possibile impostare una volta e dimenticare questo problema?

Cosa dovrei imparare meglio nel campo della progettazione dello schema DB?

risposta

13

Quando si crea una colonna come BIGINT(44), "44" è la larghezza del display, non influisce sull'intervallo di valori che è possibile memorizzare o sulla velocità con cui vengono recuperati.

Per un ID autoincrementato, si desidera utilizzare un numero UNSIGNED, ad es. BIGINT(44) UNSIGNED. Questo raddoppierà l'intervallo di valori e aggiungerà un vincolo aggiuntivo, che di solito è una buona cosa.

Un INT senza segno memorizza fino a 4.294.967.295 Un BIGINT non firmato memorizza fino a 18.446.744.073.709.551.615 - non lo riempirai in qualsiasi momento al più presto.

Non si dice quanto è veloce il proprio ID massimo: se non si inseriscono molte righe, è necessario attenersi allo UNSIGNED INT in quanto occupa meno spazio.

1

Penso che qualsiasi chiave primaria sia priva di firma per impostazione predefinita. In ogni caso, l'uso di numeri negativi per le chiavi primarie è disapprovato al meglio e rompe le cose.

+0

Potresti essere più specifico? "Spezza le cose" è piuttosto vago. Cosa si rompe esattamente? – Nobody