SQL Server表分區隻支援range分區這一種類型,往往會被大家吐槽
人家MySQL支援四種類型:RANGE分區、LIST分區、HASH分區、KEY分區
共同點是MySQL跟SQL Server也有分區對齊的問題,都是水準切分,大家都允許分區列存在NULL值
這次我們測試SQL Server表分區的分區列的NULL值,究竟NULL值是被存放在哪個區間,以前一直沒有注意
測試腳本
SQL Server表分區的NULL值問題SQL Server表分區的NULL值問題
SQL Server表分區的NULL值問題SQL Server表分區的NULL值問題 View Code
插入測試資料
表資料如下
SQL Server表分區的NULL值問題SQL Server表分區的NULL值問題 分區分布
SQL Server表分區的NULL值問題SQL Server表分區的NULL值問題
SQL Server表分區的NULL值問題SQL Server表分區的NULL值問題
SQL Server表分區的NULL值問題SQL Server表分區的NULL值問題 分區情況
SQL Server表分區的NULL值問題SQL Server表分區的NULL值問題
SQL Server表分區的NULL值問題SQL Server表分區的NULL值問題
SQL Server表分區的NULL值問題SQL Server表分區的NULL值問題 第二個視圖直接把NULL值忽略了
根據第一個視圖,我們畫出一個總結圖
SQL Server表分區的NULL值問題SQL Server表分區的NULL值問題 分析一下
SQL Server表分區的NULL值問題SQL Server表分區的NULL值問題 總結
結論其實很清晰,分區列不要允許NULL,如果允許列,那麼我們交換分區歸檔資料的時候就會有麻煩了,因為無法判斷分區列是NULL值的那些資料行是老資料還是新資料