Eu tenho esta tabela:
CREATE TABLE [dbo].[relatea] (
[mid] [varchar](16) NOT NULL,
[sid] [varchar](16) NOT NULL
)
Ele armazena correspondências de hash. Existe algum benefício em ter isso como uma pilha? Ele tem cerca de 7 milhões de linhas e os valores não são exclusivos em nenhuma das colunas. Eu sei que pilhas geralmente nunca são boas para tabelas grandes. Esta tabela atualmente não possui índices.
Eu estava pensando em alterar a tabela para:
CREATE TABLE [dbo].[relatea] (
[mid] [varchar](16) NOT NULL,
[sid] [varchar](16) NOT NULL,
CONSTRAINT [pk_relatea] PRIMARY KEY CLUSTERED (
[mid] ASC,
[sid] ASC
)
)
As consultas de tabela geralmente, mas nem sempre sid
, estão ativadas e a combinação de mid
e sid
deve ser sempre única.
É melhor criar um índice clusterizado como este, em vez de deixar a tabela como um heap?
Eu colocaria um índice clusterizado (não uma chave primária) na coluna sid. Se você fizer pesquisas na coluna do meio às vezes, adicione um índice à coluna do meio com a coluna sid como um índice incluído.
Se você não deseja criar um índice clusterizado, dois índices não clusterizados, um em cada coluna com a outra coluna como uma coluna incluída, devem fornecer o mesmo desempenho básico de leitura.