cube

Тип данных для представления многомерных кубов.
Схема размещения: ext.
Модуль реализует тип данных cube для представления многомерных кубов, а также предоставляет класс операторов индекса GiST для значений cube.
Индекс GiST для значений cube может применяться в целях поиска значений в выражениях со следующими операторами:
  • =;
  • &&;
  • @> в предложениях WHERE;
  • <@ в предложениях WHERE.

Использование модуля

В таблице показаны операторы, предназначенные специально для работы с типом cube:
ОператорОписание
cube && cube → boolean
Определяет, пересекаются ли кубы
cube @> cube → boolean
Определяет, содержит ли первый куб второй
cube <@ cube → boolean
Определяет, содержится ли первый куб во втором
cube -> integer → float8
Выдает n-ю координату куба (считая с 1)
cube ~> integer → float8
Выдает n-ю координату куба, применяя следующую нумерацию: n = 2 * k - 1, обозначает нижнюю границу k-й размерности, а n = 2 * k – верхнюю. Отрицательные значения n обозначают обратное значение соответствующей положительной координаты. Этот оператор предназначен для поддержки KNN-GiST
cube <-> cube → float8
Вычисляет евклидово расстояние между двумя кубами
cube <#> cube → float8
Вычисляет расстояние городских кварталов (метрику L-1) между двумя кубами
cube <=> cube → float8
Вычисляет расстояние Чебышева (метрику L-бесконечность) между двумя кубами
Примеры использования:
  • эффективный поиск ближайшего соседа точки в трехмерном пространстве (0.5, 0.5, 0.5):
    SELECT c FROM test ORDER BY c <-> cube(array[0.5,0.5,0.5]) LIMIT 1;
  • использование оператора ~> может эффективно выдавать первые несколько значений, отсортированных по выбранной координате. Например, чтобы получить первые несколько кубов, упорядоченных по возрастанию первой координаты (левого нижнего угла), можно использовать следующий запрос:
    SELECT c FROM test ORDER BY c ~> 1 LIMIT 5;
  • получение двумерных кубов, отсортированных по убыванию первой координаты правого верхнего угла:
    SELECT c FROM test ORDER BY c ~> 3 DESC LIMIT 5;

Ссылки на документацию разработчика

Дополнительную информацию по поставляемому модулю cube можно получить по ссылке.
Предыдущий раздел
citext
Следующий раздел
dblink
Была ли страница полезной?