2011-09-04 7 views
5

Abbiamo bisogno di memorizzare molte righe in una tabella MySQL (InnoDB), tutte con una stringa binaria di 8 byte come chiave primaria. Mi chiedevo se fosse meglio usare il tipo di colonna BIGINT (che contiene 64 bit, quindi 8 byte, numeri interi) o BINARY (8), che è una lunghezza fissa.MySQL: la chiave primaria è una stringa da 8 byte. È meglio usare BIGINT o BINARY (8)?

Poiché utilizziamo questi ID come stringhe nella nostra applicazione e non i numeri, memorizzarli come stringhe binarie mi sembrano più coerenti. Tuttavia, mi chiedo se ci sono problemi di prestazioni con questo. Fa qualche differenza?

Se ciò è importante, stiamo leggendo/archiviando questi id utilizzando la notazione esadecimale (come page_id = 0x1122334455667788). Non useremmo comunque numeri interi nelle query, dato che stiamo scrivendo un'applicazione PHP e, come sicuramente sapete, non esiste un tipo "long long int unsigned", quindi tutti gli interi sono delle dimensioni dipendenti dalla macchina.

risposta

2

Vorrei usare il binario (8) se questo corrisponde al tuo progetto.

Altrimenti avrete sempre un overhead di conversione in termini di prestazioni o complessità da qualche parte. Non ci sarà molta (se nessuna) differenza tra i tipi al livello RDBMS

Problemi correlati