Pergunta

É menos eficiente usar o texto de varchar em um banco de dados SQL?

Se sim por quê?

Se não, por que você não apenas usar sempre o texto?

Eu não estou destinada a um banco de dados específico aqui, mas a Oracle é provavelmente o mais relevante, embora eu estou testando no MySQL para o momento como parte de uma prova de conceito.

Foi útil?

Solução

De Microsoft aqui

tipos

ntext, texto e dados da imagem ser removidos em uma versão futura Microsoft SQL Server. Evite usar estes tipos de dados no desenvolvimento de novos trabalho, e um plano para modificar aplicações que atualmente usá-los. Usar nvarchar (max), VARCHAR (max), e varbinary (max) em seu lugar.

Quando você usa varchar(max) sobre o texto que você pode usá-lo na cláusula WHERE, porque eles funcionam da mesma forma como os seus homólogos menores, varchar,nvarchar and varbinary. Abaixo está uma pequena lista do que deve ser usado em oposição que estava a ser utilizado:

  • Use varchar (max) em vez de texto
  • Use nvarchar (max) em vez de ntext
  • Use varbinary (max) em vez de imagem

Outras dicas

PostgreSQL documentação diz :

Tip: Não há diferenças de desempenho entre estes três tipos, para além do aumento do tamanho do armazenamento quando se utiliza o tipo com brancos, e alguns ciclos adicionais para verificar o comprimento ao armazenar em uma coluna com restrição de comprimento. Enquanto personagem (n) tem vantagens de desempenho em alguns outros sistemas de base de dados, ele não tem tais vantagens em PostgreSQL. Na maioria das situações de texto ou variável personagem deve ser utilizado.

A resposta curta é:. Sim, eles são menos eficientes

A resposta mais longa, mais complicado é:

Sim, eles são, provavelmente, menos eficiente. Depende de qual DBMS você está usando e do tamanho da sua mesa, etc, etc. Campos de texto são de largura variável, e como tal o DBMS tem de fazer mais trabalho ao tentar encontrar registros. Quanto isso impacta em seu desempenho é diretamente proporcional ao quão eficiente o seu DBMS é, em geral, a quantidade de dados que armazena cerca de linhas da tabela, e se otimiza fixa tabelas de comprimento.

Eu sei MySQL funciona mais rápido com as linhas da tabela de tamanho fixo, mas você tem que dizer-se que a tabela é capaz de ser tratada como uma tabela de comprimento fixo em primeiro lugar. Eu realmente não tenho nenhuma experiência prática com outros DBMS de ser capaz de se relacionar números reais. Mas em tabelas com lotes (lê um milhão ou mais) dos registros, ele pode fazer uma diferença significativa. mesas menores terão pouca ou nenhuma diferença prática embora.

Você precisa ser específico sobre qual banco de dados você está falando. Eu acredito em pelo menos alguns bancos de dados, o texto é armazenado como um CLOB separado da própria tabela (que contém apenas uma referência). Isso leva à mesa sendo menor (bom), mas uma pesquisa extra e provavelmente erro de cache quando buscar (mau).

Há provavelmente indexação e consulta implicações também, mas mais uma vez, vai depender dos RDBMS particulares que você está usando.

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