connector-x
connector-x copied to clipboard
MSSQL partitioning on `uniqueidentifier` column
Currently we cannot use MSSQL uniqueidentifier type columns for partitioning. But this datatype is actually comparable, and you can run queries like this, and get results on newer SQLs:
SELECT Min(ProductId) MinPid, Max(ProductId) MaxPid FROM [tablename];
SELECT DISTINCT
PERCENTILE_DISC(0.0) WITHIN GROUP (ORDER BY ProductId) OVER () AS Pid_0,
PERCENTILE_DISC(0.1) WITHIN GROUP (ORDER BY ProductId) OVER () AS Pid_1,
PERCENTILE_DISC(0.2) WITHIN GROUP (ORDER BY ProductId) OVER () AS Pid_2,
PERCENTILE_DISC(0.3) WITHIN GROUP (ORDER BY ProductId) OVER () AS Pid_3,
PERCENTILE_DISC(0.4) WITHIN GROUP (ORDER BY ProductId) OVER () AS Pid_4,
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY ProductId) OVER () AS Pid_5,
PERCENTILE_DISC(0.6) WITHIN GROUP (ORDER BY ProductId) OVER () AS Pid_6,
PERCENTILE_DISC(0.7) WITHIN GROUP (ORDER BY ProductId) OVER () AS Pid_7,
PERCENTILE_DISC(0.8) WITHIN GROUP (ORDER BY ProductId) OVER () AS Pid_8,
PERCENTILE_DISC(0.9) WITHIN GROUP (ORDER BY ProductId) OVER () AS Pid_9,
PERCENTILE_DISC(1.0) WITHIN GROUP (ORDER BY ProductId) OVER () AS Pid_10
FROM [tablename]
SELECT COUNT(*) FROM [tablename];
>>> 3000
SELECT COUNT(*) FROM [tablename]
WHERE ProductId >= 'D3AC9AC6-FFFF-41AD-FFFF-08D958E35151'
AND ProductId < 'BB8A7077-EEEE-43BC-EEEE-08D95CCD37C9'; -- ID's are made up
>>> 300
It would be great, if we could use uniqueidentifier columns for partitioning on MSSQL, if supported.