2012-01-02 5 views
6

с помощью SQL Server 2005 Standard Edition с пакетом обновления 2SQL Server (макс) и VARCHAR (макс) данные в отдельной таблице

Мне нужно создать таблицу, в которой я буду хранящую текстовый файл (~ 200Kb) вдоль с именем файла, описанием и датой.

Должен ли мы составлять таблицу, в которой данные varchar (max) и varbinary (max) должны храниться в отдельной таблице или должен быть частью таблицы основных данных?

За этой теме What is the benefit of having varbinary field in a separate 1-1 table?

нет производительности или эксплуатационные преимущества, которые я согласен в некоторой степени, однако я вижу два преимущества

  1. хранить эти в separatable таблицы, которые могут храниться на отдельная группа файлов
  2. вы не можете восстановить индекс на столе, содержащем данные типа LOB ONLINE

Любые предложения будут оценены.

+0

Каков ваш реальный вопрос здесь? Запрос предложений не подходит для формата StackOverflow. Каковы ваши ограничения? – Oded

+0

Как правило, с точки зрения проектирования баз данных, что рекомендуется? вы можете высказать свое мнение. Я не буду обсуждать это. таблица будет вершина миллионов миллионов строк. varchar (max) столбец будет не равен NULL. –

+0

Проблема в том, что вы просите мнения - не то, что рекомендуется здесь, на StackOverflow. – Oded

ответ

7

Я бы посоветовал не разделять. Это усложняет дизайн значительно для небольшой или никакой пользы. Как вы, наверное, знаете, SQL Server уже хранит LOB на отдельных блоках распределения, как описано в Table and Index Organization.

Ваша первая проблема (отдельное распределение групп файлов для данных LOB) может быть рассмотрена явно, как уже указывал Микаэль, путем надлежащего указания нужной файловой группы в инструкции CREATE TABLE.

Ваша вторая проблема больше не беспокоит SQL Server 2012, см. Online Index Operations for Indexes containing LOB columns. Даже до SQL Server 2012 вы можете без проблем реорганизовать индексы с LOB (и REORGANIZE в сети). Учитывая, что полный индекс rebuild является очень дорогой операции (онлайн-восстановление должно быть должно быть сделано на уровне стола/индекса, нет вариантов переустановки в режиме онлайн), вы уверены, что хотите усложнить дизайн для размещения что, с одной стороны, редко требуется, а с другой стороны, будет доступно при обновлении до SQL 2012?

+0

Ремус, вы настоящий сервер SQL gem @Microsoft. Я ценю ваши комментарии. –

+0

To Remus: Что делать, если таблица имеет 2 столбца varchar (max), которые редко используются и приводят к быстрому росту таблицы? В этом случае вы разделились бы на отдельную таблицу? – user2966445

+0

@ пользователь2966445: задавайте вопросы как отдельные вопросы, не как комментарии. –

0

Я могу ответить на ваш вопрос одним простым словом: Kiss.

Это, конечно же, означает ... Держите это просто глупо.

Добавление таблицы для вообще не-нет, если вам действительно не нужно решить проблему.

Как правило, я не согласен с разделяющими таблицами. Это добавляет сложности к базам данных и коду. Наличие бесполезных столбцов в таблице - это плохо, но это не так плохо, как несколько таблиц, когда вам нужен только один.

Случаев, когда вы бы рассмотреть добавление другой таблицы:

  1. Некоторые из ваших столбцов BLOB-й лет данных (больше, чем размер страницы), и они редко используются и другие столбцы с небольшими объемами данных доступны часто.
  2. Если вам не хватает мозга.
  3. Если вы злы.
  4. Или ... если вы пытаетесь разозлить своих коллег.
Смежные вопросы