Udostępnij za pośrednictwem


Funkcja suma kontrolna (języka Transact-SQL)

Zwraca wartość suma kontrolna obliczona na podstawie wiersza tabela lub listy wyrażeń.Funkcja suma kontrolna jest przeznaczony do użycia w budowaniu indeksów mieszania.

Topic link iconKonwencje składni języka Transact-SQL

CHECKSUM ( * | expression [ ,...n ] )

Argumenty

  • *
    Określa, że obliczenie przez wszystkie kolumny tabela.Funkcja suma kontrolna zwraca błąd, jeżeli wszystkie kolumna jest typu noncomparable danych.Typy danych noncomparable są text, ntext, imageXML, a cursor, a także sql_variant z jednej z poprzednich typów jako jego typ podstawowy.

  • expression
    Is wyrażenie dowolnego typu z wyjątkiem typu noncomparable danych.

Zwracane typy

int

Remarks

Funkcja suma kontrolna oblicza wartość mieszania, o nazwie suma kontrolna, na liście argumentów.Wartość mieszania jest przeznaczony do użycia w budowaniu indeksów mieszania.Jeśli argumenty Funkcja suma kontrolna są kolumny, a indeks jest zbudowana na obliczoną wartość suma kontrolna, wynik jest indeks mieszania.Ta opcja może służyć do wyszukiwania równości za pośrednictwem kolumny.

Funkcja suma kontrolna spełnia właściwości funkcji mieszania: Funkcja suma kontrolna stosowane przez każdy dwie listy wyrażeń zwraca taką samą wartość, jeżeli odpowiednie elementy z dwiema listami tego samego typu i są równe, gdy porównywane za pomocą operator równości (=). Do tej definicji wartości null określonego typu są uważane za porównać jako równe.Jeśli jedna z wartości na liście wyrażenie ulegnie zmianie, zmieni się także na ogół suma kontrolna listyJednak istnieje niewielkie ryzyko, że tej suma kontrolna nie ulegnie zmianie.Z tego powodu nie jest zalecane używanie Funkcja suma kontrolna do wykrywać, czy zmieniły się wartości, chyba że aplikacja może tolerować Brak od czasu do czasu zmiany.Należy rozważyć użycie HashBytes zamiast niego.Jeśli określono algorytmu mieszania MD5, prawdopodobieństwo HashBytes zwraca ten sam wynik do dwóch różnych danych wejściowych jest znacznie niższa niż w przypadku funkcja suma kontrolna.

Zamówienia z wyrażeń ma wpływ na wartość wynikową Funkcja suma kontrolna.Kolejność kolumn z suma kontrolna(*) jest kolejność kolumn określone w definicji tabela lub widoku.Dotyczy to także kolumny obliczane.

Przykłady

Poniższe przykłady pokazują, przy użyciu CHECKSUM Aby utworzyć indeksy mieszania. Indeks mieszania jest tworzona przez dodanie kolumna obliczanej suma kontrolna tabela jest indeksowane, a następnie budowanie indeksu na kolumnie sumy kontrolnej.

-- Create a checksum index.
SET ARITHABORT ON;
USE AdventureWorks; 
GO
ALTER TABLE Production.Product
ADD cs_Pname AS CHECKSUM(Name);
GO
CREATE INDEX Pname_index ON Production.Product (cs_Pname);
GO

Indeks suma kontrolna może służyć jako indeks mieszania, szczególnie w celu zwiększenia szybkości indeksowania, gdy w kolumnie mają być indeksowane jest kolumna znaków długości.Indeks suma kontrolna może służyć do wyszukiwania równości.

/*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

Tworzenie indeksu kolumna obliczana materializes kolumny suma kontrolna i zmiany wprowadzone w ProductName wartość będzie być propagowane do kolumny suma kontrolna. Można również indeks może być wbudowane bezpośrednio z kolumna indeksowane.Jednak w przypadku długich wartości kluczy indeksu opartego na regularnych prawdopodobnie nie wykonywać także indeksu suma kontrolna.