CHECKSUM (Transact-SQL)

  • 07/24/2017
  • 3 minutes to read
    • c
    • r
    • M
    • i
    • M
    • +6

Applies to: standard Server (alle understøttede versioner) standard database standardiseret Instance standard Synapse Analytics

funktionen CHECKSUM returnerer checksumværdien beregnet over en tabelrække eller over en udtryksliste. Brug CHECKSUM til at opbygge hashindekser.

Transact-SYNTAKSKONVENTIONER

syntaks

CHECKSUM ( * | expression ) 

Bemærk

for at se Transact-syntaks syntaks for Server 2014 og tidligere, Se tidligere versioner dokumentation.

Bemærk

denne syntaks understøttes ikke af en serverløs pulje i Synapse Analytics.

argumenter

*
Dette argument angiver, at checksumberegningen dækker alle tabelkolonner. CHECKSUM returnerer en fejl, hvis en kolonne har en ikke-sammenlignelig datatype. Ikke-sammenlignelige datatyper inkluderer:

  • cursor
  • billede
  • tekst
  • en anden ikke-sammenlignelig datatype er kvadratisk med en af de foregående datatyper som basistype.

    udtryk
    Et udtryk af enhver type, undtagen en ikke-sammenlignelig datatype.

    Returtyper

    int

    bemærkninger

    CHECKSUM beregner en hashværdi, kaldet checksum, over sin argumentliste. Brug denne hashværdi til at opbygge hashindekser. Et hash-indeks vil resultere, hvis funktionen CHECKSUM har kolonneargumenter, og et indeks er bygget over den beregnede CHECKSUM værdi. Dette kan bruges til ligestillingssøgninger over kolonnerne.

    CHECKSUM funktionen opfylder hash-funktionsegenskaber:CHECKSUM anvendt over to lister med udtryk returnerer den samme værdi, hvis de tilsvarende elementer i de to lister har den samme datatype, og hvis de tilsvarende elementer har lighed, når de sammenlignes ved hjælp af operatoren lig med ( = ). Null værdier af en bestemt type er defineret til at sammenligne som lige forCHECKSUM funktionsformål. Hvis mindst en af værdierne i udtrykslisten ændres, ændres listekontrolsummen sandsynligvis. Dette er dog ikke garanteret.Derfor, for at opdage, om værdierne er ændret, anbefaler vi brug af CHECKSUM kun hvis din ansøgning kan tolerere en lejlighedsvis savnet ændring. Ellers overveje at bruge HASHBYTES i stedet. Med en specificeret MD5 hash-algoritme er sandsynligheden for, at HASHBYTES returnerer det samme resultat for to forskellige indgange, meget lavere sammenlignet med CHECKSUM.

    ekspressionsrækkefølgen påvirker den beregnedeCHECKSUM værdi. Rækkefølgen af kolonner, der bruges til CHECKSUM(*) er rækkefølgen af kolonner, der er angivet i tabellen eller visningsdefinitionen. Dette inkluderer beregnede kolonner.

    CHECKSUM værdien afhænger af sorteringen. Den samme værdi, der er gemt med en anden sortering, returnerer en anden CHECKSUM værdi.

    CHECKSUM () garanterer ikke unikke resultater.

    eksempler

    disse eksempler viser brugen afCHECKSUM til at opbygge hashindekser.

    for at opbygge hashindekset tilføjer det første eksempel en beregnet kontrolsumkolonne til den tabel, vi vil indeksere. Det bygger derefter et indeks på checksum kolonnen.

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

    dette eksempel viser brugen af et checksumindeks som et hashindeks. Dette kan hjælpe med at forbedre indekseringshastigheden, når kolonnen til indeks er en kolonne med langt tegn. Checksumindekset kan bruges til ligestillingssøgninger.

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

    Indeksoprettelse på den beregnede kolonne materialiserer checksumkolonnen, og eventuelle ændringer iProductName værdien vil udbrede til checksumkolonnen. Alternativt kan vi opbygge et indeks direkte på den kolonne, vi vil indeksere. Men for lange nøgleværdier vil et almindeligt indeks sandsynligvis ikke fungere så godt som et checksumindeks.

    See also

    CHECKSUM_AGG (Transact-SQL)
    HASHBYTES (Transact-SQL)
    BINARY_CHECKSUM (Transact-SQL)

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.