[桌邊服務] 強迫症使然的調整 SQL Server 欄位順序是弊大於利的

各位朋友是不是有跟我一樣的症頭?從 SSMS 看到下面的欄位順序就想要給它調整一下?

即使警告資料表會被重建,我們還去把警告給關閉。

調整之後當然看的是一個順眼,但是調整之前我們要三思,因為這個過程會使得資料表被重建,如果資料表處於開發階段或是資料量少的情況,重建速度跟得上使用者的感官及 DBA 爆氣的速度,那倒也無妨,可是資料量成長到一個程度,重建資料表這件事情就非同小可。

重建資料表相當於把資料表 DROP 掉再重新 CREATE,我們想像一下,如果資料表要重建成原來的樣子,那資料庫是不是得清出一塊空間先把原來的資料暫存起來,等待事後還原? 所以首先第一個影響就是磁碟會頻繁地讀寫。

再來,資料表的資料都被重建了,索引呢? 當然也會被重建,既然資料跟索引都會被重建,資料表勢必也會被鎖定,鎖定的時間長短就看重建的速度。

還有,根據微軟的 Support 956176,資料表的變更追蹤(Change Tracking)的設定會被刪除,必須要重新設定。

結論

綜合以上情況,資料表欄位的順序與調整它所受到的影響相比,看起來就不那麼重要,而且微軟也有強烈建議「防止儲存需要資料表重建的變更」的選項要打勾。

除此之外,就是要抑制我們對於 SQL Server 資料表欄位順序的強迫症,以及學會用 ALTER TABLE 指令來增刪改資料表的欄位。

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學