в таблице с максимальным количеством пересечений в multirange.
Имеется оператор intersect, который выводит пересечение искомого рэнджа с найденным в таблице, но сортировка по range отображает те, внутри которых самое большое значение, а не самое большое количество пересечений из-за чего приходится оценивать количественность пересечений при помощи костыля: (SELECT sum(upper(unnested) - lower(unnested)) FROM unnest(sub.range * main.range) unnested) cost
Естественно, с таким костылем я попадаю мимо индекса и все работает довольно медленно. Есть ли какая-то функция для такой “количественной” оценки пересечения?
дополню про количественную оценку. Мне интересны размеры захватов рэнджа. По моей логике [1, 10] > [101, 102], а стандартная сортировка Postres говорит об обратном
Ну, если и будет такая функцыя (допустим, напишэшь ты этот unnest в виде функцыи) — думаешь, тебе будет легче это индэксировать?
я не знаю. Возможно мне вообще нужен другой тип данных для такого (если таковой имеется вообще) задача эффективно считать сколько точек входит в range
Я бы сначала задумался над алгоритмом, который в принцыпе можэт это проиндэксировать как-то. Это... Весьма непросто, как мне кажэтся.
Обсуждают сегодня