Suma kontrolna (Transact-SQL)
Zwraca wartość suma kontrolna obliczona na podstawie wiersza tabelalub listy wyrażeń.Suma kontrolna jest przeznaczona do użytku w budowaniu indeksy mieszania.
Składnia
CHECKSUM ( * | expression [ ,...n ] )
Argumenty
*
Określa, że obliczenie przez wszystkie kolumny tabela.Suma kontrolna zwraca błąd, jeśli kolumna jest typu noncomparable danych.Typy danych noncomparable są text, ntext, image, XML, oraz cursor, a także sql_variant z jednego z powyższych typów jako jego typ bazowy.expression
Jest wyrażenie dowolnego typu, z wyjątkiem typu noncomparable.
Zwracane typy
int
Uwagi
Sumę KONTROLNĄ oblicza wartość mieszania, o nazwie suma kontrolnanad jego listy argumentów.Wartość mieszania jest przeznaczona do użycia w budowaniu indeksy mieszania.Jeśli argumenty sumy kontrolnej są kolumny, a indeks jest tworzona przez obliczona wartość sumy kontrolnej, wynik jest indeksem mieszania.To może służyć do wyszukiwania równości nad kolumn.
Suma kontrolna spełnia właściwości funkcjamieszania: Suma kontrolna stosowane przez dwie listy wyrażeń zwraca taką samą wartość, jeżeli odpowiednie elementy dwie listy tego samego typu i są równe, gdy porównywane za pomocą operatorrówności (=).Dla 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 ogólnie suma kontrolna listyJest jednak niewielkie ryzyko, że suma kontrolna nie ulegnie zmianie.Z tego powodu nie zaleca się używania sumę KONTROLNĄ do wykrywać czy zmieniły się wartości, chyba że aplikacja może tolerować czasami Brak zmiany.Należy rozważyć użycie HashBytes w zamian.Po określeniu algorytmu mieszania MD5 prawdopodobieństwo HashBytes zwraca ten sam wynik dwóch różnych danych wejściowych jest znacznie niższa od sumy kontrolnej.
Kolejność wyrażeń dotyczy wynikową wartość sumy kontrolnej.Kolejność kolumn używanych z CHECKSUM(*) jest kolejność kolumn określone w definicji tabela lub widoku.Zawiera kolumny obliczane.
Przykłady
Następujące przykłady przedstawiają za pomocą CHECKSUM do zbudowania indeksów mieszania.Indeks mieszania jest tworzona przez dodanie obliczonej suma kontrolnakolumna do tabela indeksowany, a następnie budowanie indeksu nakolumna suma kontrolna.
-- Create a checksum index.
SET ARITHABORT ON;
USE AdventureWorks2008R2;
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, aby zwiększyć szybkość indeksowania podczas kolumna mają być indeksowane jest znaków długości kolumna.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 w kolumna obliczanej zostaje suma kontrolna kolumnai wszelkie zmiany w ProductName wartość będzie propagowane do suma kontrolna kolumna.Alternatywnie można przystosować indeks bezpośrednio na kolumna indeksowane.Jednakże w przypadku długich wartości klucz indeksu regularnych prawdopodobnie nie wykonywać także indeksu suma kontrolna .
Zobacz także