Estou desenvolvendo um programa de rastreamento de alunos em que preciso armazenar 15 notas de exame.
Posso armazenar as marcas como uma sequência e dividi-las quando necessário, para fins como executar operações aritméticas. No entanto, preciso do máximo de desempenho possível.
Qual é melhor? Um campo de sequência única ou 15 campos int individuais?
Respostas:
Se você já está falando sobre divisão e computação, não armazene isso como uma matriz.
Independentemente da teoria relacional e das regras e dogmas tradicionais de normalização, é simplesmente um design que oferece flexibilidade MINIMAL.
Torne cada resultado do exame uma linha.
Não estou tentando antecipar tudo, mas há um número muito grande de coisas que esse design mais granular (e, sim, normalizado) e apenas um pouco mais caro do espaço facilita o que você pode ou não precisar agora e pode ou não usar. pode não ser necessário no futuro:
Jogando fora o maior e o menor resultado? Você terá que dividir sua matriz e classificá-la.
Média? Você terá que dividir e totalizar
Análise do resultado do exame por exame entre os alunos? Você terá que cortar e girar
Classificação para contagem (ou instância GCSEs britânicos, onde pode ser 7 As e 2Bs)? Você terá que cortar e classificar
Observe que todo esse fatiamento e classificação são muito baratos em um design normalizado e indexado.
fonte
Para pontuações, em termos de desempenho, o vencedor claro está armazenando numericamente algo como isto;
É fácil de consultar, fácil de atualizar e adicionar, e super fácil e rápido para executar agregações. Dada a escolha de "armazenar essas informações como uma string que eu tenho que dividir" ou "armazenar em uma coluna" ... o vencedor quase sempre será "armazenar em uma coluna" para a maioria dos casos de uso em um RDBMS.
fonte
contanto que você use tiny int (0 a 255) usando um caractere (15) ou 15 tinyint é o mesmo (tamanho). Então, do ponto de vista do desempenho, escolha as 15 tinyints desde que economize na extração e no manuseio de strings.
ATUALIZAR
se as marcas tiverem dois dígitos, você precisará de CHAR (30) e isso é duas vezes o tamanho de 15 vezes um centímetro.
fonte