2010-09-10 17 views
6

Potrzebuję przechowywać (duże) zapytanie SQL w kolumnie tabeli i myślałem, że przy użyciu pola BLOB. Aby było jasne, chcę zapisać zapytanie, a nie jego wynik.Oracle BLOB vs VARCHAR

Co najlepiej użyć: BLOB lub VARCHAR? A może coś jeszcze?

Odpowiedz

9

Jeśli zamierzasz przechowywać dane tekstowe, które nie mieszczą się w VarChar2, to myślę, że powinieneś użyć CLOB.

Cytat z OraFaq: * CLOB (Character Large Object) to typ danych Oracle, który może przechowywać do 4 GB danych. CLOB są przydatne do przechowywania tekstu. *

+0

tak, myślę, że mój tekst nie zmieści się w VARCHAR. Dziękuję za wyjaśnienie. –

2

Oba są różne.

Używasz BLOB do przechowywania danych binarnych, takich jak obraz, dźwięk i inne dane multimedialne.

i VARCHAR do przechowywania tekstu o dowolnym rozmiarze do limitu.

8

Inną opcją jest CLOB. W przypadku danych tekstowych bardziej logiczne jest użycie CLOB niż BLOB. Nawet jeśli nie musisz analizować danych w bazie danych, nadal może być sens używanie CLOB, ponieważ nawet przeglądanie danych jest łatwiejsze.

Niektóre funkcje są dostępne tylko przy użyciu VARCHAR. Na przykład możesz utworzyć indeks tylko w kolumnach VARCHAR (nie mówię tu o indeksie pełnotekstowym, wiem, że możesz utworzyć indeks pełnotekstowy w kolumnie CLOB). Nie możesz mieć klucza podstawowego CLOB lub BLOB (chyba nie potrzebujesz tego, jak przykład).

Większość operacji VARCHAR działa dużo szybciej niż operacje CLOB/BLOB. Nawet czytanie danych jest szybsze, jeśli używasz VARCHAR (chyba że w kolumnie jest naprawdę dużo tekstu). VARCHAR potrzebuje mniej pamięci, ale zwykle będzie w pełni czytany w pamięci, więc na końcu VARCHAR może nadal korzystać z większej ilości pamięci.

+0

To jest najlepsza odpowiedź, ponieważ wyjaśnia różnice między kolumnami varchar i clob. – Anomaly

8

Krótkie ciągi → Varchar

długie ciągi → Clob

Dane binarne → BLOB