Проблема производительности с кластеризованным индексом для изменения столбца даты в SQL Server - PullRequest
1 голос
/ 24 февраля 2012

Мы используем версию SQL Server 2008 Enterprise. У нас есть большая таблица FooTable (миллиарды строк).

Столбцы FooTable: site:varchar(7), device:varchar(7), time(datetime), value(float)

Каждый день мы добавляем миллионы новых строк.

Мы создали кластерный индекс для site, device и time (по порядку).

Как мы видим, site и device относительно постоянны, но time будет меняться с течением времени.

Запросы, выполненные к этой таблице, будут:

  1. INSERT INTO FooTable SELECT * FROM #BULK_INSERTED_TEMP_TABLE

  2. SELECT value FROM FooTable WHERE site = 'fooSite' AND device = 'fooDevice' AND time = 'fooTime'

  3. SELECT SUM(value) FROM FooTable WHERE site = 'fooSite' AND device = 'fooDevice' AND time > 'startTime' AND time <= 'endTime'

Каков наилучший дизайн кластерного индекса?

1 Ответ

1 голос
/ 24 февраля 2012

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

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

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