Обработка размера файла для данных SQL FILESTREAM
Как правильно обрабатывать размеры файлов при использовании функции FILESTREAM сервера Sql для хранения документов в базе данных?
Я знаю, что вы можете использовать команду TSQL DATALENGTH()
в столбце filestream, но в отношении этой статьи Microsoft это не всегда может быть лучшей идеей:
Избегайте извлечения данных из большого количества BLOB-файлов в приложении. Это трудоемкая операция, поскольку размер не сохраняется в ядре базы данных SQL Server. Если вам необходимо определить длину BLOB-файла, используйте функцию Transact-SQL DATALENGTH(), чтобы определить размер BLOB, если он закрыт. DATALENGTH() не открывает BLOB-файл, чтобы определить его размер.
Мне немного неясно, говорит ли это выше, что следует избегать DATALENGTH (), если это возможно, или это рекомендуемый способ получения размера файла.
Если мне приходится часто обращаться к размерам документов, чтобы показать их пользователю в виде метаданных, каков рекомендуемый способ их получения? Хранить их в отдельном поле? Или длина данных () достаточно быстрая?
1 ответ
Я полагаю, что статья предлагает не использовать DATALENGTH(), если этого можно избежать.
Хранение размера файла в отдельном столбце является подходящей альтернативой, наряду с другими метаданными о файлах (тип содержимого, расширение, отметка времени и т. Д.). Это позволит вам более эффективно запрашивать / фильтровать данные файла.
Если не ожидается, что содержимое файла изменится, проще всего обновить столбец размера файла, сохранив при этом данные потока файлов.
Если ожидается, что содержимое изменится, необходимо также не забыть обновить размер файла. Это также может быть выполнено в Sql с сохраненным вычисляемым столбцом