Antigamente, usar varchar
over char
era um grande não, não, pois ele varchar
era armazenado em uma página diferente do resto da linha. Ainda hoje é o caso do SQL Server 2008? Vou ver algum ganho de memória / desempenho ao alterar 1-3 varchar(5)
colunas para char(5)
colunas em uma tabela com
a) digamos 2.000.000 linhas b) se alguma das varchar
colunas fizer parte dos índices / das chaves primárias
sql-server
sql-server-2008
Carlo V. Dango
fonte
fonte
Respostas:
Você está confundindo texto / varchar (max) (tipos LOB) com varchar (n) / char (n)
Caso contrário, se você usar char (1000) e não varchar (1000) e o comprimento médio dos dados for, por exemplo, 42, esse é um design ruim e com muito espaço desperdiçado.
fonte
É difícil falar sobre ganhos ou ocorrências específicas de desempenho sem saber mais sobre seu esquema, mas em geral você deseja definir o tipo de dados para corresponder aos seus dados. Se você precisar de uma largura fixa (por exemplo, você sabe que sempre terá cinco caracteres), use char (5). Se você tem uma quantidade variável de dados, use varchar (5).
Para SQL, quanto mais dados você puder caber em uma página, melhor será seu desempenho.
fonte
Tanto quanto sei, o SQL Server nunca armazenou tipos de dados varchar ou nvarchar fora de linha. Texto e NText são diferentes. Existem alguns bits extras que são armazenados para uma coluna de largura variável, mas é isso.
fonte