是否可以通過用單個binary(n)
(n
爲50 x 4)替換(比如說)50 float
列來提高SQL Server 2008 R2(和更高版本)插入性能?SQL Server性能:50列vs單個二進制/ varbinary
我會怙,使用一個固定大小的binary(n)
應該提高性能(數據量是相同的,同來處理所有的列和更短的SQL查詢需要更少的工作),但很多網站建議不要使用binary
列,所以我想看看是否真的有問題使用此?
此外,問題是表非常非規範化,而且並非所有列通常都用值填充,因此varbinary(n)
在很多情況下允許我減小行大小。有時候只有一列被填滿,但是平均只有10列。
然後第三個問題是,如何進一步取代(說)5行x 50 float32
列與單個varbinary(5*50*4)
?
所以它會很酷得到一些見解:
- 單
binary(200)
更換50分float
列1行; - 替換1行50 x
float
單個varbinary(204)
(幾個字節的標誌/長度信息) - 節省空間時,列未使用; - 替換5行50 x
float
單個varbinary(1024)
(幾個字節的標誌/長度信息)。
在任何情況下總是讀取整行。
(更新)
爲了澄清,正被存儲的數據爲:
Timestamp_rounded Value_0ms Value_20ms Value_40ms ... Value_980ms
2016-01-10 10:00:00 10.0 11.1 10.5 ... 10.5
我總是讀取整個行,初級聚集鍵是第一列(時間戳),和我將永遠不必通過任何其他列查詢表。
標準化的數據顯然會有一對Timestamp
/Value
對,其中Timestamp
然後將具有毫秒的精度。但之後我將不得不存儲50行兩列,而不是1行(Timestamp
+ BLOB
)。
在單個字段中存儲多個值幾乎總是錯誤的決定。 – UnhandledExcepSean
你以後想怎麼做?你想怎麼讀/操作這個*我是一個多值二進制的東西*? – Shnugo
這些漂浮物是在一秒鐘內測量的,我總是一次存儲並閱讀它們。所以我的應用程序可以輕鬆地序列化/反序列化這些列,如果這將提高插入性能。我只希望能夠儘可能快地存儲 – Lou