Existe uma vantagem sobre a configuração campos TINYINT quando eu sei que o valor não será superior a 255?

StackOverflow https://stackoverflow.com/questions/1628551

Pergunta

Devo escolher o menor tipo de dados possível, ou se eu sou armazenar o valor 1, por exemplo, não importa qual é o tipo de dados col eo valor vai ocupar o mesmo tamanho da memória?

A questão é também, porque eu sempre terá para convertê-lo e brincar na aplicação.


Atualizar

Eu acho que varchar (1) e varchar (50) é o mesmo tamanho da memória se o valor é "a", eu pensei que a mesma coisa com int e tinyint, de acordo com as respostas que eu entendo que não é, é?

Foi útil?

Solução

Sempre escolher digitar possível os menores de dados. SQL não pode adivinhar o que você deseja que o valor máximo a ser, mas pode otimizar o armazenamento e desempenho uma vez que você diga a ele o tipo de dados.


Para responder à sua actualização:

varchar ocupa apenas a quantidade de espaço que você usa e então você está certo quando diz que o personagem "a" vai ocupar 1 byte (na codificação latim) não importa quão grande um campo varchar que você escolher. Isso não é o caso com qualquer outro tipo de campo no SQL.

No entanto, você provavelmente vai ser sacrificar a eficiência de espaço, se você fizer tudo o que um campo varchar. Se tudo é um campo de tamanho fixo, em seguida, SQL pode fazer uma multiplicação de tempo constante simples para encontrar o seu valor (como um array). Se você tiver campos varchar em lá, então a única maneira de descobrir onde os dados são armazenados para passar por todos os campos anteriores (como uma lista vinculada).

Se você está começando SQL então eu aconselho apenas para ficar longe de campos varchar menos que você espera ter campos que às vezes têm muito pequenas quantidades de texto e às vezes muito grandes quantidades de texto (como posts). É preciso experiência para saber quando usar campos de comprimento variável para o melhor efeito e até mesmo eu não sei a maior parte do tempo.

Outras dicas

É uma consideração específica de desempenho para o design do seu sistema. Em geral, quanto mais dados você pode caber em uma página de dados SQL Server, melhor o desempenho.

Uma página no SQL Server é o 8k. Usando pequenas ints em vez de ints irá permitir-lhe colocar mais dados em uma única página, mas você tem que considerar se é ou não vale a pena. Se você vai estar servindo-se milhares de acessos por minuto, então sim. Se este é um hobby ou algo que apenas algumas dezenas de usuários nunca vai ver, então não importa.

A vantagem está lá, mas pode não ser significativa, a menos que você tem lotes de linhas e executa los de operação. Haverá melhoria de desempenho e armazenamento menor.

Tradicionalmente todos os bits salvo no tamanho da página significaria um pouco de melhoria de velocidade: linhas mais estreitas meios mais linhas por página, o que significa menos memória consumidas e menos pedidos de IO, resultando em maior velocidade. No entanto, com o SQL Server 2008 Página coisas começam a ficar confuso. O algoritmo de compressão pode comprimir 4 ints byte com valores de menos de 255 no mesmo menos de um byte.

algoritmos de compressão Row vai armazenar um int 4 bytes em um byte único para valores abaixo de 127 (int é assinado), 2 bytes para valores abaixo de 32768 e assim por diante e assim por diante.

No entanto, dado que as características de compressão agradáveis ??estão apenas disponíveis em servidores Enterprise Edition, não faz sentido manter o hábito de usar o menor tipo de dados possível.

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