Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Секционирование таблицы, выбор поля по которому будет произведено секционирование  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
ms sql 2005

Есть большая таблица, для пример пусть будет называться Заказы.

id primary key (ключевое поле)
tdate smalldatetime
...
остальные поля.

Много запросов с tdate between @date_begin and @date_end

Поле tdate не уникально, много заказов в один день.

Вопросы:
При создании секционированной таблицы (sql 2005) используя функцию и схему
секционирования, как выбирается поле по которому будет произведено секционирование?

Можно ли секционировать по tdate, но при этом сделать ключевым поле ID identity(1,1),
как в исходной таблице?

Или секционирование всегда делается по ключевым полям?
30 июл 12, 17:11    [12936092]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование таблицы, выбор поля по которому будет произведено секционирование  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
trew,

а с какой целью секционирование?

про столбцы секционирования есть тут http://msdn.microsoft.com/ru-ru/library/ms190787.aspx
30 июл 12, 17:30    [12936203]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование таблицы, выбор поля по которому будет произведено секционирование  [new]
unique index
Guest
секционированный уникальный индекс обязан содержать ключ секционирования.
соответственно ID identity(1,1) - пожалуйста, но сделать его уникальным при секционировании по tdate нельзя
30 июл 12, 17:32    [12936227]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование таблицы, выбор поля по которому будет произведено секционирование  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Shakill,

а с какой целью секционирование?

Много запросов с tdate between @date_begin and @date_end

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

А секционировать по дате можно, если она не уникальна, или нужно делать ключ tdate +id ?
30 июл 12, 17:50    [12936332]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование таблицы, выбор поля по которому будет произведено секционирование  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
trew
Shakill,

а с какой целью секционирование?

Много запросов с tdate between @date_begin and @date_end

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

какой выигрыш ожидается?

[quot trew
А секционировать по дате можно, если она не уникальна, или нужно делать ключ tdate +id ?[/quot]
ну если вы с id уберете уникальный индекс, то можно обойтись и без tdate+id
30 июл 12, 18:18    [12936527]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование таблицы, выбор поля по которому будет произведено секционирование  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
Shakill
какой выигрыш ожидается?

Вначале я разберусь как правильно спроектировать секционированную таблицу, для моего случая.
Затем сделаю тест, и будет понятно есть ли смысл.
30 июл 12, 18:25    [12936572]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование таблицы, выбор поля по которому будет произведено секционирование  [new]
clustered index
Guest
Какой кластреный индекс на таблице заказов?
Какова цель секционирования?
Планируется ли секционированием отключать/переносить в архив неактивные секции?


автор
Много запросов с tdate between @date_begin and @date_end

для этого запроса не нужно секционирование, достаточно сделать не уникальный кластерный индекс по tdate
30 июл 12, 18:30    [12936597]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование таблицы, выбор поля по которому будет произведено секционирование  [new]
NoLock
Member

Откуда: левый верний угол
Сообщений: 90
CREATE TABLE T(
	[id] bigint IDENTITY(1,1) NOT NULL,
	[tdate] datetime /* or date */ NOT NULL,
. . .
) ON [DailyOrMonthlyPartitionScheme]([timestamp])
GO
ALTER TABLE T
	WITH CHECK ADD CONSTRAINT [PK_T] 
	PRIMARY KEY CLUSTERED ([tdate], [id]) 
GO
30 июл 12, 21:06    [12937130]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить