CHECKSUM()とBINARY_CHECKSUM()の違いは何ですか、適切な使用シナリオはいつ/何ですか?

以下のブログ記事を参照しているブログ一覧:”この記事を読んだ人はこんな記事も読んでいます”

CHECKSUM Functions in SQL Server 2005

このリンクから情報を追加する:

チェックサム関数の主な目的は、式または列リストに基づいてハッシュインデックスを構築することです。 レコードをテーブル内で一意にする列のチェックサムを示すために、テーブルレベルで列を計算して格納するために使用すると、行が変更されたかどうかを判断するのに役立ちます。 このメカニズムは、レコードが更新されたかどうかを確認するために、レコードを一意にするすべての列と結合する代わりに使用できます。 SQL Server Books Onlineには、この機能に関する多くの例があります。

これらの関数を使用するときに注意すべきことがいくつかあります:

列または式の順序が、比較されている2つのチェックサム間で同じであることを確認する必要があります。

この方法で生成される値は、実行時にテーブル定義の列順序に基づいており、一定期間にわたって簡単に変更できるため、checksum(*)の使用はお勧めしません。 したがって、列リストを明示的に定義します。

datetimeデータ型の列を含めるときは、粒度が1/300秒であり、小さな変動でも異なるチェックサム値になるため、注意してください。 したがって、datetimeデータ型の列を使用する必要がある場合は、正確な日付+時間/分を取得することを確認してください。 つまり、必要な粒度のレベル。

利用可能なチェックサム関数は3つあります。

チェックサム:これは上記で説明しました。

CHECKSUM_AGG:グループ内の値のチェックサムを返し、この場合はNull値は無視されます。 これは、SQL Server2005の新しい分析関数のOVER句でも機能します。

BINARY_CHECKSUM:名前が示すように、行または式のリストに対して計算されたバイナリチェックサム値を返します。 CHECKSUMとBINARY_CHECKSUMの違いは、文字列データ型に対して生成される値にあります。 このような違いの例は、BINARY_CHECKSUMの場合は”DECIPHER”と”decipher”で生成される値が異なりますが、CHECKSUM関数では同じになります(インスタンスの大文字と小文字を区別しない 別の違いは、式の比較です。 BINARY_CHECKSUM()は、2つの式の要素が同じ型とバイト表現を持つ場合、同じ値を返します。 したがって、”2volvo Director20″と”3volvo Director30″は同じ値を返しますが、CHECKSUM()関数は型を評価し、2つの文字列を比較し、等しい場合は同じ値のみが返されます。

Example:STRING BINARY_CHECKSUM_USAGE CHECKSUM_USAGE------------------- ---------------------- -----------2Volvo Director 20 -1356512636 -3414654503Volvo Director 30 -1356512636 -3414538534Volvo Director 40 -1356512636 -341455363

コメントを残す

メールアドレスが公開されることはありません。