с использованием SQL Server 2005 с пакетом обновления 4 (SP4), и я создаю таблицу базы данных.Должен ли я использовать тип данных SQL_Variant?
Вот таблица DDL
CREATE TABLE CPSync4D.ProjectProfilerOption
(
ProjectProfilerOptionID INT IDENTITY(1,1) CONSTRAINT PK_ProjectProfilerOption_ProjectProfilerOptionID PRIMARY KEY
,ProjectID INT CONSTRAINT FK_ProjectProfilerOption_Project_ProjectID FOREIGN KEY(ProjectID) REFERENCES CPSync4D.Project(ProjectID) ON DELETE CASCADE
,ProfilerOptionID TINYINT CONSTRAINT FK_ProjectProfilerOption_ProfilerOption_ProfilerOptionID FOREIGN KEY(ProfilerOptionID) REFERENCES CPSync4D.ProfilerOption (ProfilerOptionID)
,ProfilerOptionValue sql_variant NOT NULL
)
Go
profileroptionvalue столбец может содержать либо строку до 30 символов, целого числа или десятичных значений, например, значения «ProfilerValueType» или 12.52 или 20 и т. д. (не более двух десятичных знаков и целочисленных значений меньше 100)
Должен ли я использовать sql_variant или varchar (30) ...? Я никогда раньше не использовал sql_variant и не был уверен в том, что вы не используете его в плане дизайна базы данных.
Все подводные камни использования SQL_VARIANT ... с .net кода
Первые две причины не так, как в SQL 2012. Это работает просто отлично: объявить @t в виде таблицы (k1 SQL_VARIANT первичного ключа, k2 как k1) значений @t вставки («ААА») выберите * из @t – DenNukem
Как правило, вы всегда должны быть очень подозрительны к любому объяснению, которое начинается с «Как общее правило». ;-) И, нет ... это не память, особенно когда вы используете его, чтобы заменить 3 столбца различными типами данных, как вы предложили. Это также справедливый бит быстрее, чем переход через VARCHAR. Для этого есть много хороших применений. Просто большинство людей не знают, что это такое. ;-) –
@JeffModen - У вас есть ссылка, сравнивающая память и скорость 'sql_variant' с другими типами данных? –