2016-12-14 1 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, конечно)?

Этот вопрос в основном связан с неопределенностью производительности и поискового вызова и т. Д. При запросе столбцов. (Не Предположим, дополнительный индекс CustomerId, но, вероятно, нет других.)

ответ

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

Смежные вопросы