2016-12-14 29 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

相關問題