3

我想知道修改SQL Server小數列的影響是什麼。SQL Server - 增加小數精度的性能/規模

例如我有十進制(12,2)列,我想將其更改爲十進制(13,3)

事實:

問題1:如果我有超過1000萬或更多行,將如何反應?

問題2:是要花費很多時間來升級精度+量表還是瞬間的(我正在談論所應用的變化的性能)?

我其實在小桌子上試過,它似乎是瞬間的,但我想確保在做一個巨大的桌子之前。

+1

如果你增加精度不應該是一個問題。你不能將以前的備份恢復到本地機器進行測試嗎?順便提一下,你是在談論正在應用的更改的性能,還是查詢執行在之後會受到影響?我猜第一個。 – Tanner

+0

我正在談論正在應用的更改的性能。順便說一句,我無法獲得備份,數據庫實在太龐大。 – Nordes

+0

@Nordes如果你的數據庫很大,而且對業務至關重要,那麼你是否有一個災難恢復計劃?如果是這樣,你可以使用分配給它的服務器之一來嘗試這麼做嗎? –

回答

3

二進制表示是不同的,所以它需要進行記錄更新的每一行。

SELECT CAST(CAST(1 AS Decimal(12,2)) AS VARBINARY), 
     CAST(CAST(1 AS Decimal(13,3)) AS VARBINARY) 

返回

0x0C02000164000000 
0x0D030001E8030000 
+0

謝謝你的解釋 – Nordes

2

這當然不會是瞬間的。我剛剛在我的測試數據庫中有175萬行數據的表上嘗試過。查詢過去10分鐘一直在運行,並且仍在進行中。

另外,如果此列上有任何索引,則必須刪除並重新創建這些索引,這會增加所需的總時間。

拉吉

+0

謝謝你的回答。不,我的小數點列上沒有任何索引。 – Nordes