Раздел SQL Server - PullRequest
       4

Раздел SQL Server

0 голосов
/ 08 января 2019

Я работаю над базой данных с большим набором записей в MS SQL 2016. Поэтому я хочу использовать функцию разбиения таблицы строк для повышения скорости.

Как мы знаем, функция разделов работает с столбцами разделов таблицы. Допустим, [столбец даты] таблицы. В нашем сценарии есть много таблиц, которые необходимо разделить из-за того, что в записи 5–7 таблиц установлены записи. В каждой таблице нет этого [Дата столбца]. Также невозможно добавить этот столбец в каждую таблицу.

Так есть ли способ выбрать столбец раздела другой таблицы или что-то еще.

1 Ответ

0 голосов
/ 08 января 2019

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

Этот столбец может быть таким же простым, как int с YYYYMM, как значения для месячных разделов.

Вы также должны убедиться, что ваши запросы "Partition Aware". Это означает, что вы должны включить этот столбец в ваше предложение WHERE, а также в свои предложения JOIN для любых запросов. Используйте планы запросов, чтобы убедиться, что вы получаете удаление разделов по вашим запросам.

Если вы не можете изменить модель (но можете добавить разделы ???), то вы можете реализовать разбиение с разными столбцами в каждой таблице, если у вас есть один столбец в каждой таблице, который вы можете разделить на именованные диапазоны - но если у вас есть отношения 1-много, маловероятно, что ключи дочерних таблиц будут последовательными по отношению к родительской таблице. Обратите внимание, что этот подход сделает ваши запросы с разделением более сложными для обработки.

...