Skoro varchar zajmuje miejsce na dysku proporcjonalne do wielkości pola, czy jest jakiś powód, dla którego nie powinniśmy zawsze definiować varchar jako maksimum, np. varchar(8000)
Na SQL Server?
Przy tworzeniu stołu, jeśli widzę, że ktoś to robi varchar(100)
, powinienem powiedzieć, że nie, że się mylisz, co powinieneś zrobić varchar(8000)
?
sql-server
varchar
Aleksandr Levchuk
źródło
źródło
Odpowiedzi:
Podsumowanie: nie rób tego.
źródło
Zakładając, że masz na myśli SQL Server, mogę wymyślić jeden.
Istnieje limit wielkości (8 KB) wiersza w tabeli, a SQL pozwala definiować pola varchar, które teoretycznie mogą przekraczać ten limit. Tak więc użytkownik może otrzymać błędy, jeśli wstawi za dużo danych w polu z tym związanym.
Począwszy od SQL 2K8, możesz przekroczyć ten limit, ale istnieją implikacje dotyczące wydajności .
Ponadto istnieje cała kontrola racjonalności polegająca na ograniczeniu rozmiaru do oczekiwanych danych. Jeśli chcesz mieć nieograniczone pole długości, dlaczego nie przejść z tekstem lub tekstem?
źródło
Z pewnością zależy to od tego, jakie informacje są przechowywane w terenie?
Niektóre rzeczy będą miały maksymalną długość z wielu powodów, a jeśli musi być maksymalna długość, powinna to być długość twojego pola.
Jeśli teoretycznie nie ma maksymalnej długości, zapytałbym, dlaczego miałby być używany varchar.
źródło
W kontekście baz danych Oracle nauczyłem się, że zawsze użycie najmniejszego rozmiaru pola dla kolumn bazy danych ma jedną pułapkę.
Podczas przenoszenia danych poprzez eksport importu z bazy danych z sortowaniem jednobajtowym do bazy danych z sortowaniem wielobajtowym (np. Oracle XE) długość w bajtach może się zwiększyć, a import danych do tabel utworzonych przez import nie powiedzie się. Oczywiście Oracle ma możliwość zdefiniowania długości varchar2 jako char lub bajt.
Chodzi mi tutaj o to, że nie zawsze rozsądnie jest definiować pole tak, aby zawsze było jak najmniejsze. Widziałem wiele tabel zmian, aby później zwiększyć pole wraz ze zmianami wymagań.
Posiadanie 20% -100% nieużywanego pola z jest tutaj dyskusyjną opcją.
źródło