なぜServer CEのサポートvarchar型のSQLないのですか?
-
05-09-2019 - |
質問
私は、SQL Server CEのテーブルを作成し、それはvarchar型をサポートしていません実現しました。
これを見ると、私は "非Unicodeテキスト列(varchar型、char型、テキスト)とSMALLMONEYはサポートされていません。nvarchar型、nchar型、ntext型、およびお金がサポートされているが、" ことがわかった<のhref = "HTTPとして:/ /msdn.microsoft.com/en-us/library/aa275635(SQL.80).aspx」RELは= "noreferrer"> MSDN ので述べた。
これは本当ですか?なぜこれがまさに、ありますか?それは、のコンパクトのデータベースがを取るデータ型をサポートすることを保存するためのより少ないバイトを思わ...私はそれがUnicode文字を保存するために、より多くのスペースをとると仮定しています。
この背後にある理由は何ですか?
解決
のWindows CEが完全にユニコード基づいているので、それはおそらくだとそれのすべての文字列は、そのように格納されています。
他のヒント
私は、彼らが彼らの展開のフットプリントを削減し、インタフェースを簡素化しようとしていたと思います。それは、おそらくのDLLの複数のバージョン(非UnicodeバージョンVSユニコード)を配備することを避けるためにしようとします。
そして、はい、彼らが唯一のUnicodeをサポートしていることは事実である。
しかし、それは自動的にそれが店に2つのバイトを取るという意味ではありません。あなたはそれが必要とされていない場合、基本的には最初のバイトを除去するために、データベース層でそれをエンコードすることができます。多くのデータベースエンジンは、Unicodeの圧縮の手段としてこれを行います。
これは、ちょうど2つのバイトのセットを使用しないすべてのエントリは、シーケンスは2つのバイトを使用しているエンジンを伝える追加のマーカーのわずかなオーバーヘッドを有することを意味します。それ以外の場合は、単一のバイトがまだディスクに保存され、そしてRowDataの一部を読んで拡大することができます。
彼らは実際にスペースを節約するために、ディスクにバイトを入れたときに最もコンパクトなデータベースは常にランレングス圧縮の形式を使用します。あなたはそれがエンジンから出てくるときにそれを見ることが起こるのフォーマットはめったに実際にディスク上に格納されているものと一致しません。