Frage

Ich habe eine Tabelle in SQL Server CE Erstellen und erkennen, dass es nicht varchar nicht unterstützt.

Suchen Sie diese auf, ich fand, dass "Nicht-Unicode-Textspalten (varchar, Saibling, Text) und smallmoney- werden nicht unterstützt, obwohl nvarchar, nchar, ntext- und Geld unterstützt werden", wie bei MSDN angegeben.

Ist das wahr? Warum ist das genau? Es scheint, dass eine compact Datenbank würde Datentypen unterstützen, die nehmen weniger Bytes zu speichern ... Ich nehme an, es mehr Platz zu sparen, das Unicode-Zeichen nimmt.

Was ist der Grund?

War es hilfreich?

Lösung

Es ist wahrscheinlich, weil Windows CE vollständig ist Unicode basiert und all seine Saiten werden auf diese Weise gespeichert werden.

Andere Tipps

Ich denke, dass sie versuchen, ihren Einsatz Fußabdruck zu reduzieren und die Schnittstelle zu vereinfachen. Das und wahrscheinlich versuchen zu vermeiden, mehr Versionen der DLLs (Unicode vs Nicht-Unicode-Versionen).

bereitstellen

Und ja, es ist wahr, dass sie nur Unicode unterstützen.

Aber das bedeutet nicht automatisch 2 Byte zu speichern dauert. Sie können, dass in der Datenbankschicht kodieren, im Grunde das erste Byte Streifen, wenn er nicht benötigt wird. Viele Datenbank-Engines tun dies als Mittel zur Kompression auf Unicode.

Es bedeutet nur, dass alle Einträge, die den Zwei-Byte-Satz einen leichten Overhead eines zusätzlichen Marker haben zu sagen, den Motor verwenden Sie, dass die Sequenz zwei Bytes verwendet. Andernfalls wird ein einzelnes Byte noch auf der Festplatte gespeichert werden, und erweitert als ein Teil des RowData lesen.

Die meisten kompakten Datenbanken immer eine Form von Lauflängen- Kompression verwenden, wenn sie tatsächlich Bytes, um auf der Festplatte gesetzt, um Platz zu sparen. Das Format, das Sie passieren es in sehen, wenn es darum geht, aus dem Motor selten übereinstimmt, was tatsächlich auf der Festplatte gespeichert ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top