connector-x icon indicating copy to clipboard operation
connector-x copied to clipboard

MSSQL partitioning on `uniqueidentifier` column

Open armamut opened this issue 2 years ago • 0 comments

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.

Source

armamut avatar Feb 02 '23 03:02 armamut