hva er forskjellene MELLOM CHECKSUM() OG BINARY_CHECKSUM() og når/hva er de riktige bruksscenariene?
Sjekk ut følgende blogginnlegg som fremhever forskjellene.
CHECKSUM Functions in SQL Server 2005
Legge til informasjon fra denne lenken:
hovedintensjonen med SJEKKSUMFUNKSJONENE er å bygge en hash-indeks basert på et uttrykk eller en kolonneliste. Hvis du sier at du bruker den til å beregne og lagre en kolonne på tabellnivå for å angi kontrollsummen over kolonnene som gjør en post unik i en tabell, kan dette være nyttig for å avgjøre om en rad er endret eller ikke. Denne mekanismen kan deretter brukes i stedet for å bli med i alle kolonnene som gjør posten unik for å se om posten er oppdatert eller ikke. SQL Server Books Online har mange eksempler på dette stykke funksjonalitet.
Et par ting å passe på når du bruker disse funksjonene:
du må sørge for at kolonnen(e) eller uttrykksrekkefølgen er den samme mellom de to kontrollsummer som blir sammenlignet ellers verdien ville være forskjellig og vil føre til problemer.
Vi vil ikke anbefale å bruke sjekksum (*) siden verdien som vil bli generert på den måten, vil være basert på kolonnerekkefølgen til tabelldefinisjonen under kjøring som enkelt kan endres over en tidsperiode. Så, eksplisitt definere kolonne oppføring.
Vær forsiktig når du inkluderer datakolonnene for datetime, siden granulariteten er 1/300 av et sekund, og selv en liten variasjon vil resultere i en annen kontrollsumverdi. Så, hvis du må bruke en datetime datatype kolonne, så sørg for at du får den eksakte datoen + time/min. dvs. nivået av granularitet som du vil ha.
det er tre sjekksumfunksjoner tilgjengelig for deg:
SJEKKSUM: dette ble beskrevet ovenfor.
CHECKSUM_AGG: dette returnerer kontrollsummen for verdiene i en gruppe, Og Nullverdier ignoreres i dette tilfellet. Dette fungerer også med DEN nye analytiske funksjonens over-klausul I SQL Server 2005.
BINARY_CHECKSUM: som navnet sier, returnerer dette den binære sjekksumverdien beregnet over en rad eller en liste over uttrykk. Forskjellen mellom CHECKSUM og BINARY_CHECKSUM er i verdien som genereres for strengdatatypene. Et eksempel på en slik forskjell er verdiene som genereres for” DECHIFFRERE “og” dechiffrere ” vil være forskjellige i TILFELLE AV EN BINARY_CHECKSUM, men vil være den samme for CHECKSUM-funksjonen (forutsatt at vi har en saksfølsom installasjon av forekomsten). En annen forskjell er i sammenligningen av uttrykk. BINARY_CHECKSUM () returnerer samme verdi hvis elementene i to uttrykk har samme type-og byterepresentasjon. Så,” 2volvo Director 20 “og” 3Volvo Director 30 ” vil gi samme verdi, men CHECKSUM () – funksjonen evaluerer typen, samt sammenligner de to strengene, og hvis de er like, blir bare den samme verdien returnert.
Example:STRING BINARY_CHECKSUM_USAGE CHECKSUM_USAGE------------------- ---------------------- -----------2Volvo Director 20 -1356512636 -3414654503Volvo Director 30 -1356512636 -3414538534Volvo Director 40 -1356512636 -341455363