Pergunta

É mais eficiente usar um campo varchar dimensionada como uma potência de dois contra um outro número? Estou sem pensar, porque para SQL Server o padrão é 50.

No entanto, eu já ouvi (mas nunca confirmado) que dimensionamento campos como uma potência de 2 é mais eficiente porque equivale a até bytes, e os computadores processar em bits e bytes.

Então, se um campo declarado como varchar(32) ou varchar(64) têm qualquer benefício real sobre varchar(50)?

Foi útil?

Solução

Não.

Em alguns outros usos, existem algumas vantagens de usar estruturas com uma potência de dois tamanho, principalmente porque você pode caber uma agradável (potência de dois) número destes dentro de outra estrutura de poder-de-dois-sized. Mas isto não se aplica a um FieldSize DB.

O único poder-de-dois-sizing relacionadas com VARCHARs é sobre o tipo exato de varchar (ou TEXT / BLOB em alguns dialetos SQL): se é inferior a 256, ele pode usar um único byte para indicar comprimento. se for inferior a 65536 (64KB), dois bytes são suficientes, três bytes trabalhar até 16777216 (16MB), quatro bytes ir para 4294967296 (4GB).

Além disso, pode-se argumentar que VARCHAR(50) é tão caro como VARCHAR(255), uma vez que ambos terão n + 1 bytes de armazenamento.

É claro que, antes de pensar em Unicode ...

Outras dicas

pessoas

Eu sempre pensei que escolher potências de dois para campos varchar porque somos totós e é isso que fazemos. Pelo menos isso é o que eu sempre fiz.

O benefício só tangível você verá de usar certos comprimentos máximos é o espaço de armazenamento necessário para o VARCHAR. Um comprimento máximo sobre 255 exigiria um byte extra para armazenar o comprimento do valor em cada linha (e um extra de 2 bytes para comprimentos de 256 ^ 2 ou superior e assim por diante).

Para o SQL em geral? Não. Para uma implementação específica, talvez.

O que é mais eficiente não é determinado por uma especificação (SQL é apenas uma especificação), mas como ele é implementado em um determinado DBMS.

Depende da implementação de banco de dados específico, mas eu não esperaria que ele. Não é realizar todos os cálculos sobre o número de caracteres, geralmente, por isso não deve afetar o desempenho -. Único espaço

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