0

SQL Server の FILESTREAM 機能を使用してドキュメントをデータベースに保存する場合、ファイル サイズを処理する適切な方法は何ですか?

ファイルストリーム列でTSQL コマンドを使用できることは知っていますが、この Microsoft の記事DATALENGTH()に関しては、これが常に最良のアイデアであるとは限りません。

アプリケーションで大量の BLOB ファイルのデータ長を取得することは避けてください。サイズは SQL Server データベース エンジンに保存されないため、これは時間のかかる操作です。BLOB ファイルの長さを決定する必要がある場合は、Transact-SQL DATALENGTH() 関数を使用して、BLOB が閉じている場合のサイズを決定します。DATALENGTH() は、BLOB ファイルを開いてそのサイズを決定するわけではありません。

上記が可能であれば DATALENGTH() を避けるべきだと言っているのか、それともファイルサイズを取得するための推奨される方法なのか、私には少しわかりません。

メタデータとしてユーザーに表示するためにドキュメント サイズに頻繁にアクセスする必要がある場合、それらを取得するための推奨される方法は何ですか? それらを別のフィールドに保存しますか?または、datalength() は十分に高速ですか?

4

1 に答える 1

1

この記事は、回避できる場合は DATALENGTH() を使用しないことを示唆していると思います。

別の列にファイル サイズを格納することは、ファイルに関する他のメタデータ (コンテンツ タイプ、拡張子、タイムスタンプなど) と共に適切な代替手段です。これにより、ファイルの詳細をより効率的にクエリ/フィルター処理できます。

ファイルの内容が変更されないことが予想される場合は、ファイル ストリーム データを永続化しながらファイル サイズ列を更新するのが最も簡単です。

内容が変更されることが予想される場合は、ファイル サイズも更新することを忘れないでください。これは、永続化された計算列を使用して SQL で実現することもできます

于 2014-03-28T17:08:46.340 に答える