- 07/24/2017
- 3 minutes to read
-
- c
- r
- M
- i
- M
-
+6
Applies to: SQL Server (todas as versões) Azure SQL Database Azure SQL Instância Gerenciada Azure Sinapse Analytics
CHECKSUM
função retorna o valor de soma de verificação calculada através de uma linha da tabela, ou mais de uma lista de expressão. Use CHECKSUM
para criar índices de hash.
Sintaxe Transact-SQL Convenções
Sintaxe
CHECKSUM ( * | expression )
Nota
Para exibir a sintaxe Transact-SQL para o SQL Server 2014 e versões anteriores, consulte versões Anteriores de documentação.
Nota
esta sintaxe não é suportada pelo conjunto SQL serverless na análise de sinapse Azure.
argumentos
*
Este argumento especifica que o cálculo do código de validação cobre todas as colunas da tabela. CHECKSUM
devolve um erro se qualquer coluna tiver um tipo de dados não comparável. Os tipos de dados não comparáveis incluem:
- cursor
- imagem
- ntext
- texto
- XML
Outro noncomparable tipo de dados sql_variant com qualquer um dos anteriores tipos de dados como tipo base.
expression
an expression of any type, except a noncomparable data type.
Return types
int
Remarks
CHECKSUM
computes a hash value, called the checksum, over its argument list. Use este valor de hash para criar índices de hash. Um índice de hash irá resultar se a função CHECKSUM
tem argumentos em coluna, e um índice é construído sobre o valor calculadoCHECKSUM
valor. Isto pode ser usado para pesquisas de igualdade nas colunas.
CHECKSUM
função satisfaz a função de hash propriedades: CHECKSUM
aplicada através de quaisquer duas listas de expressões retornará o mesmo valor, se os elementos correspondentes das duas listas têm o mesmo tipo de dados, e se os elementos correspondentes de ter igualdade quando comparada com a de igual (=) operador. Os valores nulos de um tipo especificado são definidos para comparar como iguais para CHECKSUM
funções propósitos. Se pelo menos um dos valores da lista de expressões mudar, o checksum da lista provavelmente irá mudar. No entanto, isso não está garantido.Portanto, para detectar se os valores mudaram, recomendamos o uso de CHECKSUM
apenas se a sua aplicação puder tolerar uma alteração ocasional. Caso contrário, considere usar HASHBYTES
em vez disso. Com um determinado algoritmo de hash MD5, a probabilidade de que HASHBYTES
irá retornar o mesmo resultado, para duas entradas diferentes, é muito menor se comparado com CHECKSUM
.
A ordem de expressão afeta o valor calculado CHECKSUM
. A ordem das colunas usada para CHECKSUM(*)
é a ordem das colunas especificadas na definição da tabela ou vista. Isto inclui colunas computadas.
o valor CHECKSUM
depende da colação. O mesmo valor armazenado com uma colação diferente irá retornar um valor diferente CHECKSUM
.
CHECKSUM ()
não garante resultados únicos.
Exemplos
Estes exemplos mostram o uso de CHECKSUM
para criar índices hash.
para compilar o índice de hash, o primeiro exemplo adiciona uma coluna de códigos de validação computados à tabela que queremos indexar. Ele então constrói um índice na coluna de checksum.
-- Create a checksum index. SET ARITHABORT ON; USE AdventureWorks2012; GO ALTER TABLE Production.Product ADD cs_Pname AS CHECKSUM(Name); GO CREATE INDEX Pname_index ON Production.Product (cs_Pname); GO
este exemplo mostra o uso de um índice de checksum como um índice de hash. Isto pode ajudar a melhorar a velocidade de indexação quando a coluna a indexar é uma coluna de caracteres longos. O índice de códigos de validação pode ser usado para pesquisas de igualdade.
/*Use the index in a SELECT query. Add a second search condition to catch stray cases where checksums match, but the values are not the same.*/ SELECT * FROM Production.Product WHERE CHECKSUM(N'Bearing Ball') = cs_Pname AND Name = N'Bearing Ball'; GO
Index creation on the computed column materializes the checksum column, and any changes to the ProductName
value will propagate to the checksum column. Alternativamente, podemos construir um índice diretamente na coluna que queremos indexar. No entanto, para os valores-chave longos, um índice regular provavelmente não irá executar bem como um índice de checksum.
See also
CHECKSUM_AGG (Transact-SQL)
HASHBYTES (Transact-SQL)
BINARY_CHECKSUM (Transact-SQL)