Существует ли большая техническая разница между типами данных VARBINARY (MAX) и IMAGE?
Я читал в Интернете эти утверждения о типах SQL Server:
Существует ли действительно большое техническое различие между типами данных VARBINARY(MAX)
и IMAGE
?
Если есть разница: нужно ли настраивать, как ADO.NET вставляет и обновляет поле данных изображения в SQL Server?
Ответы
Ответ 1
Они сохраняют одни и те же данные: это насколько это возможно.
"image
" устарел и имеет ограниченный набор функций и операций, которые работают с ним. varbinary(max)
может работать как на более коротком varbinary
(то же самое для text
и varchar(max)
).
Не используйте image
для любого нового проекта: просто найдите здесь проблемы, с которыми сталкиваются люди с image
и text
типами данных из-за ограниченной функциональности.
Примеры из SO: Один, Два
Ответ 2
Я думаю, что технически они похожи, но важно заметить следующее из документацию:
ntext, text и типы данных изображений будут удалены в будущей версии MicrosoftSQL Server. Избегайте использования этих типов данных в новых разработках и планируйте изменять приложения, которые в настоящее время их используют. Вместо этого используйте nvarchar (max), varchar (max) и varbinary (max).
Фиксированные и переменные типы данных для хранения больших символов, отличных от Unicode и Unicode, и > двоичных данных. Данные Unicode используют набор символов UNICODE UCS-2.
Ответ 3
Они сохраняют одни и те же данные: это насколько это возможно.
"образ" устарел и имеет ограниченный набор функций и операций которые работают с ним. varbinary (max) можно использовать как более короткие varbinary (для текста и varchar (max)).
Не используйте изображение для любого нового проекта: просто найдите здесь проблемы у людей есть изображения и текстовые типы данных из-за ограниченного функциональность.
Фактически, VARBINARY
может хранить любые данные, которые могут быть преобразованы в массив байтов, например файлы, и это тот же самый процесс, который использует тип данных IMAGE
, поэтому, с этой точки зрения, обе данные типы могут хранить одни и те же данные.
Но VARBINARY
имеет свойство size, а IMAGE
принимает любой размер до пределов типа данных, поэтому при использовании типа данных IMAGE
вы будете тратить больше ресурсов для хранения одних и тех же данных.
В Microsoft® SQL Server® тип данных IMAGE
действительно устарел, тогда вы должны делать ставки в типе VARBINARY
.
Но будьте осторожны: Microsoft® SQL Server® CE® (включая последнюю версию 4.0), все еще используя тип данных IMAGE
, и, вероятно, этот тип данных не будет "исчезать" так скоро, потому что в версиях Compact Edition этот тип данных лучше, чем любой другой для быстрого хранения файлов.
Ответ 4
Я случайно обнаружил одно различие между ними. Вы можете вставить строку в тип изображения, но не в varbinary. Возможно, именно поэтому MS обесценивает тип изображения, так как на самом деле не имеет смысла устанавливать изображение со строкой.