2013-08-09 23 views
0

Sql Server의 FILESTREAM 기능을 사용하여 데이터베이스에 문서를 저장할 때 파일 크기를 처리하는 적절한 방법은 무엇입니까?SQL FILESTREAM 데이터의 파일 크기 처리

나는 당신이 FILESTREAM 열에서 TSQL 명령 DATALENGTH()를 사용할 수 있다는 것을 알고 있지만, this Microsoft article에 관한 것은이 항상 좋은 생각되지 않을 수도 있습니다 :

피가에서 BLOB 파일의 많은의 데이터 길이를 검색 신청. 이 크기는 SQL Server 데이터베이스 엔진에 저장되지 않으므로 시간이 오래 걸리는 작업입니다. BLOB 파일의 길이를 결정해야하는 경우 BLOB가 닫혀있는 경우 Transact-SQL DATALENGTH() 함수를 사용하여 BLOB의 크기를 결정하십시오. DATALENGTH()는 크기를 판별하기 위해 BLOB 파일을 열지 않습니다.

가능한 경우 DATALENGTH()를 피하거나 파일 크기를 검색하는 것이 권장되는 경우 위의 예에서 말한 것인지 확실하지 않습니다.

사용자에게 메타 데이터로 표시하기 위해 문서 크기에 자주 액세스해야하는 경우이를 검색하기 위해 권장되는 방법은 무엇입니까? 별도의 필드에 보관 하시겠습니까? 또는 datalength() 충분히 빠릅니까?

+0

DATALENGTH()가 응용 프로그램에 충분히 빠르지를 결정해야합니다. 뿐만 아니라 당신은 무엇을 의미합니까. – Paparazzi

+0

의견이 없습니다. 죄송합니다. 나는 아직도 인용 된 텍스트에 대해 약간 혼란 스럽다. :) 그것은 단지 datalength()에 대해서 이야기 할 것인가 아니면 크기 검색의 두 가지 분리 된 유형에 대해 이야기하고 있는가? – magnattic

+0

또한 별도의 열을 사용하여 크기를 직접 저장하는 방법의 결과는 무엇입니까? 왜 그것이 좋은/나쁜 생각일까요? – magnattic

답변

1

나는 피해야 할 경우 DATALENGTH()를 사용하여 이 아님을 제안합니다 ().

별도의 열에 파일 크기를 저장하는 것이 파일에 대한 다른 메타 데이터 (콘텐츠 형식, 확장명, 타임 스탬프 등)와 함께 적합합니다. 이렇게하면 파일 세부 정보를 더 효율적으로 쿼리/필터링 할 수 있습니다.

파일 내용이 변경되지 않으면 파일 스트림 데이터를 유지하면서 파일 크기 열을 업데이트하는 것이 가장 간단합니다.

내용이 변경 될 것으로 예상되는 경우 파일 크기를 업데이트해야합니다. SQL에서 지속 된 계산 열을 사용하여 수행 할 수도 있습니다.