SQL Serverの2019 Microsoftが紹介してUTF-8サポート用CHAR
とVARCHAR
データ型をと言います:
この機能により、使用中の文字セットによっては、ストレージを大幅に節約できる場合があります。たとえば、UTF-8対応の照合を使用して、ASCII文字列を含む既存の列データ型をNCHAR(10)からCHAR(10)に変更すると、ストレージ要件が約50%削減されます。この削減は、NCHAR(10)がストレージに22バイトを必要とするのに対し、CHAR(10)は同じUnicode文字列に12バイトを必要とするためです。
UTF-8は、ように見えるサポートので、基本的に私たちがUnicodeデータを格納し始めることができ、すべてのスクリプトをvarchar
してchar
列。また、ドキュメントで述べられているように、これによりテーブルとインデックスのサイズを削減でき、そこから読み取るデータの量が少ないため、パフォーマンスがさらに向上します。
これは、UTF-16を実装する列nvarchar
とnchar
列の使用を停止できることを意味しているのでしょうか。
誰かがシナリオと理由を指摘できますUTF
か?エンコーディングでcharデータ型を使用せず、n-chars データ型を引き続き使用しますか?
CHAR
、Unicode型よりもUTF-8 型を使用するほうが得策です(圧縮の有無にかかわらず、最終的にデータを処理するには圧縮を解除する必要があるため)。また、Windowsのネイティブ文字列タイプはUnicodeであるため、UTF-8文字列をデコードする必要があることがよくあります。関連するトレードオフは、N
タイプがすぐに廃止される可能性が低いことを意味します。
CHAR
エンジンが文字列を直接UTF-8として処理するためのネイティブサポートをエンジンが取得する場合、UTF-8の#1 "キラーアプリ" はおそらくLinux上のSQL Serverです-ここでUTF-8は(多かれ少なかれ) "ネイティブ"文字セットですそして、UTF-16として文字列を保持することは、あまり効率的ではありません。CHAR
保存できる文字を制限する照合は魅力的ではなかったので、Windowsで既に使用している場所で使用しても害はありません。