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

Откуда: Москва / Калуга
Сообщений: 33364
Блог
Коллеги, добрый день,

SQL 2008

Необходимо помесячно секционировать и сжать очень объемную таблицу в 1.6 мрд строк

CREATE TABLE [Архив_ПрайсЛисты](
	[Дата] [smalldatetime] NOT NULL,
	[Ключ_Номенклатуры] [int] NOT NULL,
	[КодПрайса] [smallint] NOT NULL,
	[ЦенаМалая] [numeric](14, 4) NOT NULL,
	[ЦенаОбычная] [numeric](14, 4) NOT NULL,
	[ЦенаМалаяРуб] [numeric](12, 2) NULL,
	[ЦенаОбычнаяРуб] [numeric](12, 2) NULL
) ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [FindOldPrice] ON [dbo].[Архив_ПрайсЛисты] 
(
	[КодПрайса] ASC,
	[Дата] ASC,
	[Ключ_Номенклатуры] ASC
)
INCLUDE ( [ЦенаОбычная]) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

мастер выдал такой код
BEGIN TRANSACTION
CREATE CLUSTERED INDEX [ClusteredIndex_on_Дата - месяц_633829117914110272] ON [dbo].[Архив_ПрайсЛисты] 
(
	[Дата]
) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, DATA_COMPRESSION = PAGE ON PARTITIONS (1 TO 97)) ON [Дата - месяц]([Дата])

DROP INDEX [ClusteredIndex_on_Дата - месяц_633829117914110272] ON [dbo].[Архив_ПрайсЛисты] WITH ( ONLINE = OFF )

COMMIT TRANSACTION

но что-то мне подсказывает, что это будет выполнятся неприемлимо долго, да и еще в одной транзакции такой большой объем.

Предполагаю создать новую таблицу, постоить некластерный индекс по дате в исходной таблице и помесячно переливать данные в новую таблицу. Есть ли способы лучше?
13 июл 09, 11:05    [7407253]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование большой таблицы  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33364
Блог
ап)
13 июл 09, 12:18    [7407638]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование большой таблицы  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Предложенный вами метод имеет приемущество только в том, что транзакции будут короткими и, как следствие, потребуется меньше ресурсов.
По времени выигрыша, скорее всего, не будет.
13 июл 09, 13:35    [7408209]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить