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值的那些数据行是老数据还是新数据