- 07/24/2017
- 3 minutes to read
-
- c
- r
- M
- i
- M
-
+6
Applies to: SQL Server (všechny podporované verze) Databáze SQL Azure SQL Azure Managed Instance Azure Synapse Analytics
CHECKSUM
funkce vrátí hodnotu kontrolního součtu počítány přes řádek tabulky, nebo přes vyjádření seznam. Použijte CHECKSUM
k vytvoření hash indexů.
Transact-SQL Syntaxe Konvence
Syntax
CHECKSUM ( * | expression )
Poznámka:
zobrazit Transact-SQL syntaxe pro SQL Server 2014 a dříve, viz Předchozí verze dokumentace.
Poznámka
tato syntaxe není podporována serverless SQL pool v Azure Synapse Analytics.
argumenty
*
tento argument určuje, že výpočet kontrolního součtu pokrývá všechny sloupce tabulky. CHECKSUM
vrací chybu, pokud má některý sloupec nesrovnatelný datový typ. Mezi nesrovnatelné datové typy patří:
- kurzor
- obrázek
- ntext
- text
- XML
Další noncomparable datový typ je typ dat sql_variant s kterýmkoliv z předchozích typů dat, jako jeho základní typ.
výraz
výraz jakéhokoli typu, s výjimkou nesrovnatelného datového typu.
návratové typy
int
poznámky
CHECKSUM
vypočítá hodnotu hash, nazývanou kontrolní součet, nad seznamem argumentů. Tuto hodnotu hash použijte k vytvoření indexů hash. Hash index bude výsledek, pokud CHECKSUM
funkce má sloupec argumenty, a index je postaven nad počítačová CHECKSUM
hodnota. To lze použít pro vyhledávání rovnosti ve sloupcích.
CHECKSUM
funkce splňuje hashovací funkce vlastnosti: CHECKSUM
aplikován na libovolné dva seznamy výrazů vrátí stejnou hodnotu, pokud odpovídajících prvků dvou seznamů mají stejný datový typ, a jestli ty odpovídající prvky mají rovnosti, kdy ve srovnání s použitím rovná se (=) operátor. Hodnoty Null zadaného typu jsou definovány pro porovnání jako stejné pro CHECKSUM
funkční účely. Pokud se změní alespoň jedna z hodnot v seznamu výrazů, kontrolní součet seznamu se pravděpodobně změní. To však není zaručeno.Proto, aby se zjistit, zda se hodnoty změnily, doporučujeme používání CHECKSUM
pouze tehdy, pokud aplikace může tolerovat občasné minul změnit. V opačném případě zvažte použití HASHBYTES
. S určitou MD5 hash algoritmus, pravděpodobnost, že HASHBYTES
vrátí stejný výsledek pro dva různé vstupy, je mnohem nižší ve srovnání s CHECKSUM
.
pořadí výrazů ovlivňuje vypočtenou hodnotu CHECKSUM
. Pořadí sloupců použitých pro CHECKSUM(*)
je pořadí sloupců uvedených v definici tabulky nebo zobrazení. To zahrnuje vypočtené sloupce.
hodnota CHECKSUM
závisí na řazení. Stejná hodnota uložená s jiným porovnáním vrátí jinou hodnotu CHECKSUM
.
CHECKSUM ()
nezaručuje jedinečné výsledky.
příklady
tyto příklady ukazují použití CHECKSUM
pro sestavení hash indexů.
Chcete-li vytvořit index hash, první příklad přidá sloupec vypočteného kontrolního součtu do tabulky, kterou chceme indexovat. Poté vytvoří index na sloupci kontrolního součtu.
-- 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
tento příklad ukazuje použití kontrolního součtu jako hash indexu. To může pomoci zlepšit rychlost indexování, pokud je sloupec na index dlouhý sloupec znaků. Index kontrolního součtu lze použít pro vyhledávání rovnosti.
/*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
vytvoření Indexu na vypočítaný sloupec zhmotňuje kontrolní součet sloupce, a jakékoli změny do ProductName
, hodnota se bude šířit do kontrolní součet sloupce. Alternativně bychom mohli vytvořit index přímo na sloupci, který chceme indexovat. U dlouhých klíčových hodnot však běžný index pravděpodobně nebude fungovat stejně dobře jako index kontrolního součtu.
See also
CHECKSUM_AGG (Transact-SQL)
HASHBYTES (Transact-SQL)
BINARY_CHECKSUM (Transact-SQL)