Wiele moich baz danych ma pola zdefiniowane jako varchars. Nie stanowiło to większego problemu, ponieważ mieszkam i pracuję w Ameryce (gdzie jedynym istniejącym językiem jest „amerykański”. Ahem )
Po około 5 latach pracy z bazami danych odkryłem, że w końcu mam problemy z ograniczoną naturą pola varchar i muszę zmodyfikować moje pola, aby przechowywać dane jako nvarchars. Po tym, jak musiałem dokonać kolejnej aktualizacji tabeli i przekonwertować pole varchar na nvarchar, pomyślałem sobie: dlaczego nadal robimy to w ten sposób? Już dawno podjąłem decyzję, by zdefiniować wszystkie nowe pola tekstowe w nvarchar zamiast w varchar, czego nauczyłem się z podręczników, gdy byłem w szkole 10 lat temu.
Jest rok 2011, aw zeszłym roku pojawiła się nowa wersja SQL Server. Dlaczego nadal obsługujemy typ danych varchar, skoro możemy / powinniśmy zamiast tego używać nvarchar?
Wiem, że często argumentuje się, że nvarchars są „dwa razy większe” niż varchary, więc użycie przestrzeni dyskowej może być jednym argumentem dla konserwujących varcars.
Jednak dzisiejsi użytkownicy mogą zdefiniować swoich nvarchars do przechowywania danych jako UTF-8 zamiast domyślnego UTF-16, jeśli chcą zaoszczędzić miejsce. Pozwoliłoby to na kodowanie 8-bitowe, jeśli jest to przede wszystkim pożądane, przy jednoczesnym zapewnieniu, że rzadki 2-8-bajtowy znak wstawiany do ich bazy danych niczego nie złamie.
Czy coś brakuje? Czy istnieje dobry powód, dla którego nie zmieniło się to w ciągu ostatnich 15-20 lat?