SR0009: Evite usar tipos de comprimento variável que são de tamanho 1 ou 2
RuleId |
SR0009 |
<strong>Categoria</strong> |
Microsoft.design |
Alteração significativa |
Quebrando |
Causa
Um ou mais tipos de dados de comprimento variável tem um comprimento de 1 ou 2.
Descrição da regra
Quando você usa os tipos de dados de comprimento variável, como, por exemplo, VARCHAR, NVARCHAR e VARBINARY, incorrer em um custo de armazenamento adicional para controlar o tamanho do valor armazenado no tipo de dados. Além disso, as colunas de comprimento variável são armazenadas após todas as colunas de comprimento fixo, que pode ter implicações de desempenho.
Observação |
---|
Você também receberá um aviso se você declarar um tipo de comprimento variável, como, por exemplo, VARCHAR, mas você não especificar nenhum comprimento. Este aviso ocorre porque, se não for especificado, o comprimento padrão é 1. |
Como corrigir violações
Se o comprimento do tipo será muito pequeno (tamanho de 1 ou 2) e consistente, declará-los como um tipo de comprimento fixo, como, por exemplo, CHAR, NCHAR e binário.
Quando suprimir avisos
Você não deve suprimir esse aviso.
Exemplo
Este exemplo mostra definições de duas tabelas. A primeira tabela declara uma seqüência de caracteres de comprimento variável para ter comprimento 2. A segunda tabela declara uma seqüência de caracteres de comprimento fixo em vez disso, o que evita que o aviso.
CREATE TABLE [dbo].[TableWithWarning]
(
[ID] INT NOT NULL IDENTITY(0, 1),
[c1] INT NOT NULL PRIMARY KEY,
[c2] INT,
[c3] INT,
[SmallString] VARCHAR(2)
)
ON [PRIMARY]
CREATE TABLE [dbo].[FixedTable]
(
[ID] INT NOT NULL IDENTITY(0, 1),
[c1] INT NOT NULL PRIMARY KEY,
[c2] INT,
[c3] INT,
[SmallString] CHAR(2)
)
ON [PRIMARY]
Dados para tipos de comprimento variável são armazenados fisicamente depois que os dados para tipos de comprimento fixo. Portanto, você fará com que a movimentação de dados se você alterar uma coluna de variável para o comprimento fixo em uma tabela que não está vazio.
Consulte também
Conceitos
Analisando o código do banco de dados para melhorar a qualidade do código