0

Мне нужно сохранить три типа документов в таблице. количество типов документов фиксировано и не изменится. существует более 1 миллиона записей, и в будущем это может быть более 100 миллионов. для этой цели производительность очень важна в моей программе. Я не знаю, какой способ может улучшить производительность базы данных. на основе строк или столбцов?Сохранение записей в строках или столбцах в SQL Server

Роу основе:

CREATE TABLE [Person].[Document] 
(
    [Id] [uniqueidentifier] NOT NULL, 
    [PersonId] [uniqueidentifier] NOT NULL, 
    [Document] [varbinary](max) NULL, 
    [DocType] [int] NOT NULL, 
) 

колонки на основе:

CREATE TABLE [Person].[Document] 
(
    [Id] [uniqueidentifier] NOT NULL, 
    [PersonId] [uniqueidentifier] NOT NULL, 
    [Document_Page1] [varbinary](max) NULL, 
    [Document_Page2] [varbinary](max) NULL, 
    [Document_Page3] [varbinary](max) NULL, 
) 
+0

Сколько страниц документов вы ожидаете? –

+0

@TimBiegeleisen три страницы документа. – ArMaN

+0

Ожидаете ли вы индексов на столбцах '[Document]' и '[DocType]' в схеме на основе строк? –

ответ

2

Нормированная (или как вы назвали его - на основе строки) решение является более гибким.
Это позволяет вам изменять количество сохраненных документов для каждого человека без изменения структуры базы данных и обычно является предпочтительным решением.
Миллион строк - это небольшая таблица для SQL-сервера.
Я видел таблицы базы данных с 50 миллионами строк, которые работают очень хорошо.
Это вопрос правильной индексации.

Я полагаю, что если вы хотите повысить производительность, используйте столбец идентификатора int для вашего первичного ключа вместо uniqueidentifier, так как он очень легкий вес и намного проще индексировать базу данных, поскольку он не упорядочен по порядку случайно.

Я бы пошел с нормализованным решением.

+0

tnx для вашего ответа, но в этом проекте скорость и производительность важнее гибкости. записи могут быстро расти и могут быть более 100 миллионов записей в последующие годы. количество типов документов фиксировано и не изменится. – ArMaN

+0

Производительность зависит от запросов. если большинство ваших запросов «дайте мне все документы человека x», тогда действительно неважно, выберете ли вы «основанный на строке» или «основанный на столбцах». на самом деле, я не уверен, что могу подумать о запросе, который явно будет выполняться над одним дизайном над другим (то есть, если вы правильно указали таблицу). –

+0

Каждый документ может иметь максимум 3 страницы по собственному признанию. Таким образом, вы смотрите на разницу в размере таблицы в 3 раза. Будет ли это для вас нарушением сделки? –

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