2012-07-11 19 views

risposta

57

Un lungo VARCHAR viene memorizzato nello stesso modo di un campo TEXT/BLOB in InnoDB.

Dallo stoccaggio prospettico BLOB, TESTO come e di lunga VARCHAR vengono gestiti stesso modo da InnoDB. Questo è il motivo per cui il manuale Innodb chiama "colonne lunghe" piuttosto rispetto ai BLOB.

source

A meno che non hai bisogno di indicizzare queste colonne (nel qual caso VARCHAR è molto più veloce) non v'è alcun motivo per utilizzare VARCHAR sopra TEXT per i campi lunghi - ci sono alcune ottimizzazioni specifiche di motore in MySQL per sintonizzare il recupero dei dati in base alla lunghezza e dovresti utilizzare il tipo di colonna corretto per sfruttarli.

Nel caso in cui si utilizza MyISAM una discussione approfondita sull'argomento è here.


TEXT e BLOB sono memorizzati dal tavolo con la tabella solo avere un puntatore alla posizione della immagazzinamento.

VARCHAR viene memorizzato in linea con la tabella. VARCHAR è più veloce quando la dimensione è ragionevole.

Secondo this test, VARCHAR è di circa tre volte più veloce del testo.

+8

Definire "campo lungo". –

+3

@PaulBrewczynski> 768 byte (vedere il collegamento Lion pubblicato) – delrox

+1

Una correzione per InnoDB: TEXT e BLOB sono archiviati fuori dalla tabella in InnoDB solo se "long" (> 768 byte) e solo la coda è memorizzata fuori tabella (simile a VARCHAR). La vera differenza è che le lunghezze massime differiscono, e con VARCHAR devi fornire una lunghezza massima (applica insieme al limite di sistema di 65k). – delrox

4

Il testo deve essere utilizzato per stringhe molto lunghe di lunghezza indeterminata. Inoltre, le query che restituiscono campi TEXT tendono ad essere molto più lente delle loro controparti VARCHAR.

+0

Nel mio database, ho una colonna denominata Descrizione. Il tipo di dati dovrebbe essere un VARCHAR o TEXT? Non sono sicuro per quanto tempo saranno i dati della descrizione, ma sto pensando di mettere un limite di conteggio delle parole sul front-end in modo che abbia una lunghezza massima. – codeinprogress

Problemi correlati