SQLite добавляет поддержку оконных функций


Разработчики SQLite выпустили новую версию с поддержкой оконных функций и улучшенным оптимизатором запросов.

SQLite – это внутрипроцессная библиотека, которая реализует автономный, бессерверный, транзакционный механизм базы данных SQL. Вся база данных SQL с несколькими таблицами, индексами, триггерами и представлениями содержится в одном файле на диске.

Новая поддержка оконных функций позволяет писать операторы SQL, в которых входные значения берутся из «окна» одной или нескольких строк в наборе результатов оператора SELECT, поэтому вы можете писать такие операторы, как:

ВЫБЕРИТЕ x, y, row_number () НАД win1, rank () НАД win2

ОТ t0

WINDOW win1 AS (ЗАКАЗЫВАЕТСЯ ПО y ДИАПАЗОН МЕЖДУ НЕОГРАНИЧЕННОЙ ПРЕДЫДУЩЕЙ И ТЕКУЩЕЙ СТРОКОЙ),

win2 КАК (РАЗДЕЛЕНИЕ ПО y ПОРЯДОК ПО x)

ЗАКАЗАТЬ ПО x;

Оконные функции отличаются от обычных функций SQL наличием предложения OVER.

В дополнение к поддержке функции Window в этом выпуске есть расширенная команда Alter Table, которая позволяет вам переименовывать столбцы в таблице с помощью ALTER TABLE table RENAME COLUMN oldname TO newname. Функция переименования таблицы была изменена так, что она также обновляет ссылки на переименованную таблицу в триггерах и представлениях.

Оптимизатор запросов – еще один элемент, который был улучшен, особенно при использовании с агрегированными запросами. Оптимизатор больше не загружает столбцы, которые не нужны в агрегатном запросе, когда столбцы не входят в агрегатную функцию и не являются частью предложения GROUP BY.

Другие улучшения оптимизатора запросов улучшают производительность запросов, использующих оператор IN, в которых столбец, используемый для поиска, не является крайним левым столбцом в многоколоночном индексе; и оптимизатор теперь использует транзитивное свойство, чтобы попытаться распространить постоянные значения в предложении WHERE. Например, преобразуйте «a = 99 AND b = a» в «a = 99 AND b = 99».

Другое интересное улучшение – добавление модуля Geopoly. Это альтернативный интерфейс для расширения R-Tree, который использует нотацию GeoJSON для описания двумерных многоугольников. Geopoly включает функции для определения того, когда один многоугольник содержится внутри другого или перекрывается с ним. Его можно использовать для вычисления площади, заключенной в многоугольник, или для выполнения линейных преобразований многоугольников, или для визуализации многоугольников в формате SVG.


Добавить комментарий