我現在有一個數據庫表設置如下(EAV - 商業上的原因是有效的):在SQL Server中使用sql_variant over varchar有什麼好處嗎?
- 標識 - 一個int(PK)
- 鍵 - 獨特,VARCHAR(15)
- 價值 - VARCHAR( 1000)
這允許我將混合值作爲鍵/值對添加到我的數據庫中。例如:
1 | 'Some Text' | 'Hello World'
2 | 'Some Number' | '123456'
etc.
在我的C#代碼,我用ADO.Net使用reader.GetString(2);
檢索值作爲一個字符串,然後讓我的代碼的其他地方將其轉換爲所需,例如... Int32.ParseInt(myObj.Value);
。我正在考慮通過將值列更改爲sql_variant
數據類型來增強我的表格,但我不知道這會有什麼好處?基本上,有我的值列是sql_variant
vs varchar(1000)
?
更清楚,我讀的地方,SQL_VARIANT被返回的數據類型爲nvarchar(4000)返回給客戶端進行調用(哎喲)!但是,在返回之前我不能將它轉換成它的類型嗎?顯然,我的代碼必須進行調整,以將值存儲爲對象而不是字符串值。我想,在我目前的情況下,使用sql_variant
與其他類型的優點/缺點是什麼?哦,值得一提的是,我計劃存儲的日期時間,字符串和數值類型(int,decimal等)在value列中;我不打算存儲和blob或圖像等
As [Aaron Bertrand在他的*糟糕的習慣中提到踢 - 使用錯誤的數據類型*](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to -kick-using-the-wrong-data-type.aspx):*全部使用SQL_VARIANT * - 它不是**一個好主意。不要使用它。你沒有得到任何好處 - 但有很多缺點... –
除了聲明sql_variant是壞的,你是否聲明varchar(1000)是在我確切的情況下去的方式? –
您如何看待使用sql_variant會增強您的表格? –