Вопрос

Я создавал таблицу в SQL Server CE и понял, что она не поддерживает varchar.

Просмотрев это, я обнаружил, что "текстовые столбцы, отличные от Юникода (varchar, char, text) и smallmoney, не поддерживаются;хотя nvarchar, nchar, ntext и money поддерживаются "как указано в MSDN.

Это правда?Почему именно это происходит?Казалось бы , что a компактный база данных поддерживала бы типы данных, которые принимают меньше байтов для сохранения...Я предполагаю, что для сохранения символов Юникода требуется больше места.

Каковы причины, стоящие за этим?

Это было полезно?

Решение

Вероятно, это потому, что Windows CE полностью основана на Unicode, и все ее строки хранятся таким образом.

Другие советы

Я думаю, что они пытались уменьшить объем своего развертывания и упростить интерфейс.Это и, вероятно, попытка избежать необходимости развертывания большего количества версий DLL (unicode по сравнению с версиями, отличными от unicode).

И да, это правда, что они поддерживают только Unicode.

Но это не означает автоматически, что для хранения требуется 2 байта.Вы можете закодировать это на уровне базы данных, чтобы в основном удалить первый байт, когда он не нужен.Многие ядра баз данных делают это как средство сжатия в Unicode.

Это просто означает, что любые записи, которые используют двухбайтовый набор, имеют небольшие накладные расходы на дополнительный маркер, сообщающий движку, что последовательность использует два байта.В противном случае один байт все еще может быть сохранен на диске и расширен как часть чтения rowData.

Большинство компактных баз данных всегда используют форму сжатия по длительности выполнения, когда они фактически помещают байты на диск в целях экономии места.Формат, в котором вы случайно видите его, когда оно выходит из движка, редко соответствует тому, что на самом деле хранится на диске.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top