Czy są jakieś korzyści z używania sql_variant nad varchar w SQL Server?

Obecnie mam konfigurację tabeli bazy danych w następujący sposób (EAV - uzasadnienie biznesowe jest ważne):

Id - int (PK)Klucz - unikalny, varchar (15)Wartość - varchar (1000)

To pozwala mi dodawać mieszane wartości do mojej bazy danych jako pary klucz / wartość. Na przykład:

1   | 'Some Text'      | 'Hello World'
2   | 'Some Number'    | '123456'
etc.

W moim kodzie C # używam ADO.Netreader.GetString(2); aby pobrać wartość w postaci ciągu, następnie zamień mój kod gdzie indziej, w razie potrzeby, na przykład ...Int32.ParseInt(myObj.Value);. Patrzę na ulepszanie tabeli, zmieniając kolumnę wartości na asql_variant typ danych, ale nie wiem, jaka byłaby z tego korzyść? Zasadniczo, czy jest jakaś korzyść z posiadania mojegowartość kolumna zsql_variant vsvarchar(1000)?

Aby być bardziej zrozumiałym, przeczytałem gdzieś, że sql_variant jest zwracany jako nvarchar (4000) z powrotem do klienta wykonującego wywołanie (ouch)! Ale czy nie mogę go oddać temu typowi, zanim go zwrócę? Oczywiście mój kod musiałby zostać dostosowany do przechowywania wartości jako obiektu zamiast wartości ciągu. Zgaduję, jakie są zalety / wady używaniasql_variant w porównaniu z innym typem w mojej obecnej sytuacji? Och, i warto wspomnieć, że wszystko, co planuję przechowywać, to czasy danych, łańcuchy i typy liczbowe (int, dziesiętne itd.) W kolumnie wartości; Nie planuję przechowywania i blobów ani obrazów itp.

questionAnswers(4)

yourAnswerToTheQuestion