CHECKSUM (Transact-SQL)

  • 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)

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.