Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

char vs varchar para desempenho no banco de dados de ações


No MyISAM, há algum benefício em fazer registros de largura fixa. VARCHAR é largura variável. CHAR é de largura fixa. Se suas linhas têm apenas tipos de dados de largura fixa, então a linha inteira é de largura fixa, e o MySQL ganha alguma vantagem calculando os requisitos de espaço e o deslocamento das linhas nessa tabela. Dito isso, a vantagem pode ser pequena e dificilmente vale a pena um possível ganho minúsculo que é superado por outros custos (como eficiência de cache) de ter colunas CHAR de largura fixa e preenchidas onde VARCHAR armazenaria de forma mais compacta.

O ponto de interrupção em que se torna mais eficiente depende do seu aplicativo, e isso não é algo que possa ser respondido, exceto por você testar as duas soluções e usar aquela que funciona melhor para seus dados sob o uso do seu aplicativo.

Em relação a INT(7) versus INT(11), isso é irrelevante para armazenamento ou desempenho. É um mal-entendido comum que o argumento do MySQL para o tipo INT tenha algo a ver com o tamanho dos dados - não tem. O tipo de dados INT do MySQL é sempre 32 bits. O argumento entre parênteses refere-se a quantos dígitos preencher se você exibir o valor com ZEROFILL. Por exemplo. INT(7) exibirá 0001234 onde INT(11) exibirá 00000001234. Mas este preenchimento só acontece quando o valor é exibido, não durante o armazenamento ou cálculo matemático.