Estou usando esta consulta para examinar mais profundamente meus índices columnstore enquanto fotografo meus planos de execução (ou seja, eliminação de segmento etc.):
SELECT
tables.name AS table_name,
indexes.name AS index_name,
columns.name AS column_name,
partitions.partition_number,
column_store_segments.segment_id,
column_store_segments.min_data_id,
column_store_segments.max_data_id,
column_store_segments.row_count
FROM sys.column_store_segments
INNER JOIN sys.partitions
ON column_store_segments.hobt_id = partitions.hobt_id
INNER JOIN sys.indexes
ON indexes.index_id = partitions.index_id
AND indexes.object_id = partitions.object_id
INNER JOIN sys.tables
ON tables.object_id = indexes.object_id
INNER JOIN sys.columns
ON tables.object_id = columns.object_id
AND column_store_segments.column_id =
columns.column_id
WHERE tables.name = 'R***'
ORDER BY tables.name, columns.name,
column_store_segments.segment_id;
(nome da tabela editado).
O resultado da análise é o seguinte: Postimg .
Minha pergunta é simples: Como é que o resultado da análise não corresponde ao nome das colunas nos índices? Como você pode ver na parte direita da imagem, os nomes das colunas na grade de resultados são diferentes do que é mostrado nas propriedades do índice columnstore.
Ambiente: SQL 2019 CU10 Standard; Servidor Windows 2019.
Obrigado antecipadamente por um feedback, tome cuidado S.
O
column_id
campo que faz parte da visualização do catálogo do sistema columnstore:sys.column_store_segments
Fonte
É diferente do
column_id
campo que faz parte da visualização do catálogo do sistema:sys.columns
Fonte
Se você já se perguntou sobre o que o SSMS está sendo executado em segundo plano, sempre pode configurar um evento estendido para capturar as consultas ao selecionar as propriedades do índice. A consulta que o SSMS usa que mostra as propriedades do índice e as colunas na ordem correta:
Aqui vemos que uma visão intermediária do catálogo do sistema
sys.index_columns
é usada.Sabendo disso, sua consulta final adaptada pode ser algo assim: