2010-09-10 19 views
6

Ho bisogno di memorizzare una (grande) query SQL in una colonna di una tabella e ho pensato di utilizzare un campo BLOB. Per essere chiari, voglio memorizzare la query, non il suo risultato.Oracle BLOB vs VARCHAR

Cosa è meglio usare: BLOB o VARCHAR? O qualcos'altro forse?

risposta

9

Se si memorizzano dati di testo che non rientrano in un VarChar2, penso che si supponga di utilizzare uno CLOB.

Citazione da OraFaq: * Un CLOB (Character Large Object) è un tipo di dati Oracle che può contenere fino a 4 GB di dati. I CLOB sono utili per la memorizzazione del testo. *

+0

sì, penso che il mio testo non si inserisce in un VARCHAR. Grazie per la spiegazione. –

2

Sono entrambi diversi.

È possibile utilizzare BLOB per memorizzare dati binari come immagini, audio e altri dati multimediali.

e VARCHAR per memorizzare testo di qualsiasi dimensione fino al limite.

8

Un'altra opzione è CLOB. Per i dati di testo è più logico utilizzare CLOB che BLOB. Anche se non è necessario analizzare i dati all'interno del database, potrebbe comunque avere senso utilizzare CLOB, perché anche visualizzare i dati è più semplice.

Alcune funzioni sono disponibili solo tramite VARCHAR. Ad esempio, puoi creare un solo indice su colonne VARCHAR (non sto parlando dell'indice fulltext qui, so che puoi creare un indice fulltext su una colonna CLOB). Non è possibile avere una chiave primaria CLOB o BLOB (credo che non sia necessario, solo a titolo di esempio).

La maggior parte delle operazioni VARCHAR sono molto più veloci delle operazioni CLOB/BLOB. Anche la lettura dei dati è più veloce se si utilizza VARCHAR (a meno che nella colonna non ci sia molto testo). VARCHAR ha bisogno di meno overhead di memoria, ma di solito saranno completamente letti in memoria, quindi alla fine VARCHAR potrebbe ancora usare più memoria.

+0

Questa è la risposta migliore, perché spiega le differenze di funzionalità e prestazioni tra le colonne varchar e clob. – Anomaly

8

stringhe brevi → VARCHAR

lunghe stringhe → CLOB

dati binari → BLOB