Eventuali duplicati:
MySQL: Large VARCHAR vs. TEXT?Quando usare TESTO in mysql invece di VARCHAR
Dal VARCHAR
può avere 65k byte ora, quando l'allora dovrebbe TEXT
essere usato al posto di VARCHAR
?
Eventuali duplicati:
MySQL: Large VARCHAR vs. TEXT?Quando usare TESTO in mysql invece di VARCHAR
Dal VARCHAR
può avere 65k byte ora, quando l'allora dovrebbe TEXT
essere usato al posto di VARCHAR
?
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.
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.
Definire "campo lungo". –
@PaulBrewczynski> 768 byte (vedere il collegamento Lion pubblicato) – delrox
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
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.
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
Quando sono necessari più di 65 caratteri. :) – GordonM
Quello dovrebbe essere 65k * byte *, non caratteri, penso – davek
Oh, sì. 65k byte. Aggiornata la mia domanda. – enchance