Если таблица представляет собой перекрестное объединение двух наборов данных, почему бы вам не сохранить отдельные таблицы и не рассчитать объединение по мере необходимости? Базы данных хороши в этом.
Из вашего описания я бы ожидал увеличения производительности, если бы вы запустили CLUSTER
в таблице, чтобы физически переписать ее в порядке индекса. Тогда вам нужно будет получить доступ к меньшему количеству блоков таблиц.
К сожалению CLUSTER
займет много времени, сделает таблицу недоступной и должна регулярно повторяться.
Альтернативой, которая может быть лучше, являетсяразбить таблицу на target_value
. 4000 разделов - это немного, поэтому, возможно, используйте разделение по спискам для объединения нескольких в один раздел.
Это позволит вашим запросам выполнять быстрое последовательное сканирование только на нескольких разделах. Это также облегчит работу автоочистки.
Суть в том, что если вы выберете много строк в таблице, это всегда займет много времени.