Какие операции испытывают медлительность, и вы смогли определить, почему эти операции медленные?
Если вы разбиваете по классам, вы замедляете процесс обновления класса для строки. Поскольку это приведет к перемещению строки из одного раздела в другой, вы бы превратили обновление в удаление из первого раздела и вставку во второй раздел. Если ваш почасовой процесс медленный и медленный, потому что для поиска всех новых записей требуется время, компромисс производительности здесь может быть вполне разумным. Если ваш почасовой процесс медленный, потому что требуется время, чтобы вычислить, каким должен быть новый класс, и обновить все строки, с другой стороны, этот компромисс, вероятно, очень плохая идея.
Поскольку разделение - это вариант с дополнительными затратами в дополнение к лицензии корпоративного выпуска, я бы рекомендовал убедиться, что вы не можете использовать некоторые функциональные индексы, чтобы получить большинство улучшений производительности, на которые вы ориентируетесь, при относительно небольших затратах. Если, например, у вас было два функциональных индекса
CREATE INDEX idx_new_entries
ON your_table( (CASE WHEN class = 0 THEN primary_key ELSE null END) );
CREATE INDEX idx_class1_entries
ON your_table( (CASE WHEN class = 1 THEN primary_key ELSE null END) );
вместе с парой просмотров
CREATE VIEW vw_new_entries
AS
SELECT (CASE WHEN class = 0 THEN primary_key ELSE null END) primary_key,
<<list of columns>>
FROM your_table
WHERE class = 0
CREATE VIEW vw_class1_entries
AS
SELECT (CASE WHEN class = 1 THEN primary_key ELSE null END) primary_key,
<<list of columns>>
FROM your_table
WHERE class = 1
тогда любые запросы к новым представлениям, отфильтрованным по PRIMARY_KEY, будут использовать индексы на основе функций, которые, в свою очередь, будут индексировать только соответствующие строки в базовой таблице. Это может позволить вам улучшить производительность поиска, не прибегая к разбиению.