0

假设客户和文档的标准用例,其中客户可以拥有许多文档。还假设每个客户都会有许多大文件(从几千字节到几场演出)。

桌子必须有,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的)?

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

4

1 回答 1

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 列也不是这种情况

    在单独的 1-1 表中包含 varbinary 字段有什么好处? SQL Server varbinary(max) 和 varchar(max) 数据在一个单独的表中

  4. 我自己测试,我有相同的执行计划和相同的统计数据。 在此处输入图像描述

于 2017-06-20T16:24:40.077 回答