Use SQL varchar (max) ou texto?

3

Estou usando o SQL Server 2005 e tenho uma coluna na qual preciso armazenar grandes quantidades de texto (às vezes com mais de 8000 caracteres, o limite varchar). Existe uma desvantagem em usar o tipo de dados "texto"? Eu também li sobre o uso de varchar (MAX) - seria melhor se a maioria dos meus dados armazenados contivesse menos de 8000 caracteres, mas eu precisava ser capaz de suportar mais?

    
por Austin 27.05.2009 / 19:26

5 respostas

14

Você deve sempre escolher os novos tipos LOB em 2005, em vez dos tipos legados (text, ntext, image), desde que você tenha o potencial de dados com mais de 8000 bytes.

Os novos tipos funcionam com a maioria das funções intrínsecas de manipulação de strings, enquanto os tipos legados não. Eles são armazenados no banco de dados da mesma maneira, mas existem alguns pequenos ajustes para ler algoritmos para os novos tipos também.

Há algumas coisas que você deve saber:

    Os tipos legados
  • são armazenados fora da linha por padrão, o que significa que há um pedido de veiculação aleatório para acessar os dados, independentemente do tamanho dos dados. Você pode, claro, alterar isso com a opção "texto em linha"
  • novos tipos são armazenados na linha ON por padrão, até um limite de 8000 bytes e enquanto houver espaço no registro. Isso reduz a chance de levar esse IO aleatório para chegar ao valor, MAS torna os registros de dados muito mais longos, levando a outros problemas. Você pode alterar se os dados são armazenados em linha ou fora de linha, alterando a opção grandes valores-tipos-fora da linha
  • sempre que você tiver um tipo de LOB novo ou legado na sua definição de tabela, significa que o índice em cluster da tabela não pode fazer uso de operações de índice online na edição Enterprise.

Eu postei uma postagem no blog que discute isso com mais detalhes em link .

Espero que isso ajude

    
por 27.05.2009 / 19:34
2

Use varchar (max), é a abordagem recomendada daqui para frente, para que você economize nos problemas de upgrade, também é muito mais fácil trabalhar com o tipo de dados textual.

    
por 27.05.2009 / 19:35
1

Use varchar (MAX). O limite para varchar (MAX) é de 2 GB.

Se o conteúdo for menor que 8.000 bytes, ele será armazenado em linha. No entanto, se o conteúdo for maior que 8.000 bytes, ele será armazenado no LOB como um campo de texto.

Além disso, os tipos de dados TEXT, NTEXT e IMAGE serão descontinuados em algum momento no futuro.

Referência

    
por 27.05.2009 / 19:35
0

Algumas boas postagens no blog do MVP Simon Sabin sobre isso em seu blog. Pesquisa por Simon Sabin varchar (max)

Eu concordaria com Paul, use varchar (max) sempre que possível.

    
por 27.05.2009 / 20:45
0

varchar (max)

  • limite de 2 GB ou 2 ^ 31 caracteres
  • se < 8000 bytes, será armazenado em linha
  • se > 8000 armazenados usando LOB

Texto

  • 2.147.483.647 caracteres
  • Isso está sendo preterido em favor de varchar (max)
  • A tabela armazena o valor de texto em uma estrutura de LOB e a tabela manterá apenas um ponteiro
por 19.08.2009 / 16:07