Следующим шагом после создания файловых групп является создание функции разделения. Функция разделения создается оператором create partition function. Существуют две формы этого оператора в зависимости от типа разделения. Синтаксис create partition function, связанный с этими типами разделения, следующий: create partition function functionjname(param_type) as range [left | right] for values ([boundary_value [, ... л 1])
Здесь function_name задает имя функции разделения; param_type определяет тип данных ключа разделения; boundary_vaiue задает одно или более значений границ, для каждого раздела разделяемой таблицы или индекса, использующего функцию разделения.
Оператор create partition function поддерживает две формы опции range: range left И range right. range left указывает, что условие грэницы являвтся верхней границей в первом разделе, range right указывает, что условие границы является нижней границей в последнем разделе. Если опция не указана, по умолчанию принимается range left.
Прежде чем определять функцию разделения, вы должны задать таблицу, которая будет использована для разделения. В примерах этой главы будет использована таблица orders. В примере 26.3 создается эта таблица. Вначале проверьте, не содержит ли ваша база данных sample таблицу orders. Если содержит, то удалите ее.
Оператор create table в примере 26.3 создает таблицу orders, а последующие операторы загружают миллион строк в эту таблицу.
В примере 26.4 показано определение функции разделения для таблицы orders с 1 000 000 строк.
Оператор create partition function myRangePFi указывает, что будут два раздела и что значением границы является 500 000. Это означает, что все значения разделяющего ключа, которые меньше, чем 500 000, будут размещены в первом разделе, а все значения, большие, чем 500 000, будут сохраняться во втором разделе. (Заметьте, что значение границы связано со значениями разделяющего ключа, которым в нашем примере является столбец orderid таблицы orders. Как вы увидите, мы задаем имя разделяющего ключа в соответствующем операторе create table.)
Созданная функция разделения является бесполезной, пока вы не свяжете ее с соответствующими файловыми группами. Этот процесс называется схемой разделения, вы используете оператор create partition scheme для установления связи между схемой разделения и соответствующими файловыми группами. В примере 26.5 показано создание схемы разделения для функции разделения из примера 26.4.
Здесь создается схема разделения с именем myRangePSi. В соответствии с этой схемой все значения слева от значения границы (т. е. все значения, меньшие 500 000) будут сохраняться в файловой группе MyDBFGi. Аналогично, все значения справа от значения границы будут сохраняться в файловой группе Mydb_fg2.
Создание разделяемой таблицы существенно отличается от создания неразделяемой таблицы. Как вы можете догадаться, оператор create table должен содержать имя схемы разделения и имя столбца таблицы, который будет использоваться в качестве разделяющего ключа. В примере 26.6 показана улучшенная форма оператора create table, которая используется для разделения таблицы orders.
Предложение on в конце оператора create table применяется для задания уже определенной схемы разделения. Используя эту схему, создаваемая схема разделения связывает вместе столбец таблицы (orderid) и функцию разделения, где задан тип данных (int) разделяющего ключа (см. пример 26.4).