Таблица разделов SQL Server 2005 по данным из внешних источников
Есть ли канонический способ разбить таблицу по ссылкам на данные другой таблицы?
например
timetable
id
datetime
bigtable
id
timetable_id -- foreign key
.. other data ..
Я хочу разделить Bigtable по дате и времени в расписании. Thankx.
2 ответа
Как отмечалось здесь, столбец разбиения должен быть частью всех уникальных индексов таблицы, которые будут включать ваш первичный ключ.
Я думаю, что ваш единственный выбор - денормализация timetable.datetime
колонка в bigtable
так что столбец доступен для разбиения.
Ключ секционирования должен быть столбцом таблицы, которая разбивается на части. Если у вас есть корреляция между id
а также datetime
в timetable
тогда вы можете разделить по этому идентификатору:
id datetime
1 20091001
2 20091002
3 20091003
...
32 20091101
33 20091102
...
62 20091201
...
тогда диапазоны разделения (2009-10-01, 2009-10-31), (2009-11-01, 2009-11-30) и т. д. можно выразить в терминах id
значения: (1,31), (32,62), ... Однако для этого необходимо, чтобы ранг id
значения совпадают точно с рангом datetime
ценности. Если у вас нет этой корреляции, то вы должны либо переместить datetime
столбец в bigtable
или переставить id
так что они соотносятся с ним datetime
,