Производительность и обслуживание базы данных с тысячей столбцов. - PullRequest
0 голосов
/ 29 ноября 2011

Мне нужно создать таблицу с тысячей полей (столбцов), и я не знаю, как управлять производительностью и как ее поддерживать, пожалуйста, помогите мне с предложениями.

Ответы [ 3 ]

1 голос
/ 29 ноября 2011

Если в большинстве случаев большинство значений равно NULL, вам следует выполнить обновление до SQL Server 2008 и использовать разреженные столбцы, см. Использование разреженных столбцов и Использование наборов столбцов .

Если значения ваших столбцов в основном не равны NULL, тогда я подвергаю сомнению надежность вашей модели данных.

0 голосов
/ 29 ноября 2011

Опять же, пожалуйста, не делайте этого.

Проверьте Значение атрибута сущности в отношении баз данных. Это поможет вам хранить большое количество разреженных атрибутов на объекте и не заставит базы данных плакать.

Основная концепция показана ниже

create table #attributes
(
    id int identity(1,1),
    attribute varchar(20),
    attribute_description varchar(max),
    attribute_type varchar(20)
)

insert into #attributes values ('Column 1','what you want to put in column 1 of 1000','string')
insert into #attributes values ('Column 2','what you want to put in column 2 of 1000','int')

create table #entity
(
    id int identity(1,1),
    whatever varchar(max)
)

insert into #entity values ('Entity1')
insert into #entity values ('Entity2')

create table #entity_attribute
(
    id int identity(1,1),
    entity_id int,
    attribute_id int,
    attribute_value varchar(max)
)


insert into #entity_attribute values (1,1,'e1value1')
insert into #entity_attribute values (1,2,'e1value2')
insert into #entity_attribute values (2,2,'e2value2')

select * 
from #entity e
join #entity_attribute ea on e.id = ea.entity_id

Разница между тем, что идет в таблице #entity, и тем, что идет в таблице #attribute, в некоторой степени зависит от приложения, но общим правилом будет то, что никогда не будет нулевым и доступно каждый раз, когда вам нужен объект, я бы ограничить это до 10 или около того предметов.

Позвольте мне угадать, это медицинское заявление?

0 голосов
/ 29 ноября 2011

Первые вещи, которые вам нужно будет сделать

  1. Нормализовать
  2. Определите сущности и выделите их в разные таблицы. Нарисуйте диаграмму ER и
    вы получите больше идей.
  3. Не превышать столбец таблицы больше 15, если столбцы varchar или text, потому что
    тогда SQL придется хранить данные на разных страницах. Если столбцы
    логическое значение может быть около 30.
  4. Правильно определите кластерный индекс на основе ваших данных, поскольку это оптимизирует запросы.

Поскольку природа вопроса не содержит подробностей, ответы также носят общий характер и имеют вид с высоты 100 футов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...