2016-12-14 40 views
0

假设一个客户和文档的标准用例,客户可以拥有多个文档。同时假设每个客户都会有一些大文件(从几千字节到几个演出)。在SQL Server中,我应该将FILESTREAM的元数据放在单独的表中吗?

DocumentStore表必须具有,至少...

DocumentId INT IDENTITY PRIMARY KEY, 
Stream VARBINARY(MAX) FILESTREAM NOT NULL, 
DocGuid UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL 
    UNIQUE DEFAULT NEWID 

哪些优点和领域,例如在相同CustomerId, FileExtension, FileSize, Hash, CreatedBy, CreatedDate, ... goitf或不同表的缺点(与参考当然是相同的DocumentId)?

这个问题主要源于查询列时性能和分页等的不确定性。 (假设在客户ID的附加索引,但可能没有他人。)

回答

0
  1. FILESTREAM列是在一个单独的文件组,所以没有性能也不操作优点。

  2. 无的FILESTREAM最佳做法中提到,当您使用单独的表FILESTREAM列,你获得一些性能

    https://msdn.microsoft.com/library/hh461480 https://blogs.msdn.microsoft.com/blogdoezequiel/2011/02/11/best-practices-on-filestream-implementations/ https://www.mssqltips.com/sqlservertip/1875/best-practices-when-using-filestream-feature-of-sql-server/

  3. 即使它不是常规VARBINARY列

    的情况下

    What is the benefit of having varbinary field in a separate 1-1 table? SQL Server varbinary(max) and varchar(max) data in a separate table

  4. 我自己测试过,而且我有相同的执行计划和统计数据。 enter image description here

相关问题