CHECKSUM (Transact-SQL)

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

Applies to: SQL Server(すべてのサポートされているバージョン)Azure SQLデータベースAzure SQLマネージインスタンスAzure Synapse Analytics

CHECKSUMCHECKSUMを使用します。

Transact-SQL構文規則

構文

CHECKSUM ( * | expression ) 

SQL Server2014以前のTransact-SQL構文を表示するには、以前のバージョンのドキュメントを参照してください。注:この構文は、Azure Synapse AnalyticsのサーバーレスSQLプールではサポートされていません。

引数

*
この引数は、チェックサムの計算がすべてのテーブルの列をカバーすることを指定します。 CHECKSUMいずれかの列が互換性のないデータ型を持っている場合、エラーを返します。 互換性のないデータ型には、次のものがあります:

  • cursor
  • image
  • ntext
  • text
  • XML

対応できない別のデータ型はsql_variantで、前述のいずれかのデータ型を基本型としています。


互換性のないデータ型を除く任意の型の式。

戻り値の型

int

備考

CHECKSUMCHECKSUMCHECKSUM値の上にインデックスが構築されている場合に生成されます。 これは、列の等価検索に使用できます。

CHECKSUMCHECKSUM二つのリストの対応する要素が同じデータ型を持ち、equals(=)演算子を使用して比較したときにそれらの対応する要素が等しい場合、同じ値を返します。 指定された型のNull値は、CHECKSUMCHECKSUMHASHBYTESを使用することを検討してください。 指定されたMD5ハッシュアルゴリズムでは、HASHBYTESCHECKSUMCHECKSUMCHECKSUM(*)に使用される列の順序は、テーブルまたはビュー定義で指定された列の順序です。 これには計算列が含まれます。p>

CHECKSUMCHECKSUM値を返します。

CHECKSUM ()一意の結果を保証するものではありません。

これらの例は、ハッシュインデックスを構築するためにCHECKSUMの使用を示しています。

ハッシュインデックスを作成するために、最初の例では、インデックスを作成するテーブルに計算されたチェックサム列を追加します。 次に、チェックサム列にインデックスを作成します。

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

この例では、チェックサムインデックスをハッシュインデックスとして使用しています。 これにより、索引付けする列が長い文字列の場合の索引付け速度が向上します。 チェックサムインデックスは、等値検索に使用できます。

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

計算列でインデックスを作成すると、チェックサム列が具体化され、ProductName値への変更はチェックサム列に反映されます。 あるいは、索引付けしたい列に直接索引を作成することもできます。 ただし、長いキー値の場合、通常のインデックスはチェックサムインデックスと同様に機能しません。

See also

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

コメントを残す

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