Googlowanie wokół wydaje się być mieszane raporty, czy rozmiar VARCHAR2
kolumny w Oracle wpływa na wydajność, czy nie.
Chciałbym VARCHAR
nieco zmienić kwestię wielkości i mam nadzieję, że uzyskam wgląd w to:
Biorąc pod uwagę (wielowierszowe) pola tekstowe ( nie krótkie, takie jak nazwy), które chcesz przechowywać w bazie danych (Oracle), czy jest jakiś sens (wrt. Wydajność lub inny) w nie maksymalizowaniu VARCHAR
pojemności ( VARCHAR2(4000)
w Oracle), ale wybór mniejsza wartość, taka jak 1024 lub 512, ponieważ prawdopodobnie i tak będzie wystarczająca w 98% przypadków.
oracle
performance
varchar
Jaskółka oknówka
źródło
źródło
Odpowiedzi:
Wpływa to na zużycie pamięci, zwłaszcza gdy program kliencki musi przydzielić wystarczającą ilość pamięci, aby otrzymać zestaw danych.
Pamiętaj, że wiele aplikacji (zwłaszcza aplikacji internetowych) korzysta z UTF-8, który jest zestawem znaków wielobajtowych. W związku z tym powinieneś brać pod uwagę znaki, a nie bajty.
Gdybym spodziewał się ponad tysiąca znaków, to bym aktywnie rozważył CLOB. Zastanawiałbym się, czy będzie przechowywać zwykły tekst, czy jakąś formę znaczników (wiki / html?), Użycie w językach innych niż euro. Na przykład tutaj pytania i odpowiedzi byłyby CLOB, ale komentarze mogą zmieścić się w VARCHAR.
Jeśli zmaksymalizujesz VARCHAR, to za sześć miesięcy ktoś będzie chciał go powiększyć, a ty skopałbyś się za nieużywanie CLOBA.
źródło
Zasadniczo nie ma żadnych rozważań dotyczących wydajności, chociaż mogą wystąpić problemy uboczne . Limit dla
varchar
należy traktować jak ograniczenie jak każdy inny - ma on na celu egzekwowanie reguły biznesowej.IMO powinno zadać pytanie: „Czy chcę, aby dane tekstowe przechowywane w tym polu nie były dłuższe niż n bajtów / znaków” - to jedyny decydujący czynnik przy wyborze pomiędzy
varchar(512)
ivarchar(4000)
.Zauważ, że zakładam, że mówisz o
varchar
typie SQL - sytuacja jest inna,pl/sql
a wybór długości może być kluczowy ze względu na przydział pamięci.źródło
clob
, prawda?Jeśli mniejsza wartość będzie działać dla 98% przypadków, ale Varchar2 (4000) będzie działać dla 100% przypadków, wtedy nie masz innego wyboru, jak użyć większej wartości . Utworzenie oddzielnej tabeli dla 2% wartości, a następnie koordynacja wstawiania / selekcji itp. Zwiększyłoby złożoność, która zniszczyłaby wszelkie korzyści pamięciowe lub wydajnościowe wynikające z nierozszerzania pola.
źródło