I'm joining the SQL Server DMVs sys.column_store_segments and sys.partitions. Logically, I would join on partition_id:
SELECT *
FROM sys.column_store_segments AS s
INNER JOIN sys.partitions AS p
ON p.partition_id = s.partition_id
But I have also seen examples that join on hobt_id, for instance in the canonical documentation:
SELECT *
FROM sys.column_store_segments AS s
INNER JOIN sys.partitions AS p
ON p.hobt_id = s.hobt_id
Does it matter in practice? I guess it is guaranteed to be the same unique heap-or-b-tree anyway?
Interestingly enough Microsoft writes:
You can uniquely identify a segment using <
hobt_id,partition_id,column_id>, <segment_id>.
But IIRC, from hobt_id and partition_id only one would be necessary here...?
Ah. Not only are they as unique, they are the exact same thing!
So in fact they are interchangeable.