Pergunta

Eu tenho uma tabela com cerca de 40 colunas. A única diferença nos nomes das colunas é que os últimos 20 começam com "B" antes do nome da coluna. Esta tabela é usada para comparar. Em outras palavras, compare os dados nas 20 primeiras colunas com os dados nas últimas 20 colunas.

Eu sei que isso é um design muito ruim, então como essa tabela deve ser redesenhada, para que haja apenas 20 colunas, mas ainda podemos comparar os dados?

Editar: se ajudar, também usamos esses dados para encontrar uma coorte correspondente

Observe também que o desempenho é uma preocupação principal aqui. Duplicando as colunas, a obtenção dos dados é extremamente rápida.

Obrigado!

Foi útil?

Solução

Duas possíveis arquiteturas e uma dica de consulta.

1) Construa sua tabela com uma coluna "Tipo" e use -a para sinalizar "primário" vs. "alternativo". No seu caso, "A" vs. "B" pode ser apropriado.

2) Construa uma partição vertical, duas tabelas idênticas (para dados primários e alternativos), que compartilham uma chave primária comum. (Se ID = 42 estiver em uma tabela, deve estar no outro-a menos que os dados "alternativos" sejam opcionais; nesse caso, não preencha a segunda tabela.) Também opcionalmente, tenha uma terceira tabela que rastreia todo o Primário Primário possível As chaves, juntamente com todos os dados que sempre são comuns às duas tabelas.

Dica: Leia em Selecionar ... Exceto e selecione ... Intersect. Eles correm de maneira perturbadora e são uma idéia para comparar todas as colunas e linhas entre dois conjuntos de dados para diferenças (exceto) e correspondências (intersect). Você pode usar isso com bastante facilidade com qualquer uma das duas estruturas e funcionaria com o código existente (embora possa ser mais preocupante escrever a consulta).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top