SQLite 3.20 улучшает планировщик запросов


Произошло серьезное обновление SQLite, встраиваемой библиотеки базы данных SQL, которая присутствует во многих гаджетах с ограниченным объемом памяти, таких как мобильные телефоны, КПК и MP3-плееры. В новом выпуске есть улучшенный планировщик запросов и расширение, предлагающее дополнения табуляцией для интерактивных пользовательских интерфейсов.

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

SQLite 3.20 имеет несколько новых расширений. Расширение виртуальной таблицы, SQLite_Stmt, реализует виртуальную таблицу, которая предоставляет информацию обо всех подготовленных операторах, связанных с подключением к базе данных. Новое расширение виртуальной таблицы Union добавляет еще одну виртуальную таблицу, благодаря которой несколько независимых таблиц rowid выглядят как одна большая таблица.

Расширение Completion находится в стадии разработки. Он реализует возвращающую табличное значение функцию с именем «завершение», которую можно использовать для предложения завершения частично введенных слов во время интерактивного ввода SQL. Таблицу завершения можно использовать, например, для помощи в реализации автозавершения по табуляции.

Планировщик запросов был улучшен несколькими способами. Теперь он будет перемещать константные выражения WHERE за пределы цикла любых отдельных циклов для каждого члена OR с OR сканирования. Еще одно усовершенствование обработки предложений WHERE состоит в том, что ограничения предложения WHERE оцениваются последними, когда они включают коррелированные запросы. Это было добавлено, потому что такие предложения, возможно, вообще не придется оценивать, поэтому имеет смысл прорабатывать их только в том случае, если они действительно достигнуты.

Если вы укажете связанные параметры, их значения теперь проверяются, чтобы определить, можно ли использовать частичный индекс. Еще одно улучшение означает, что если два плана имеют одинаковую сметную стоимость, смещение, то выбор делается для использования того, который не использует сортировщик.

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

Также улучшена командная оболочка и улучшены функции даты и времени, которые можно использовать в ограничениях CHECK, в индексах для выражений и в предложениях WHERE частичных индексов.

Производительность SQLite 3.2 также была оптимизирована, и в результате он должен использовать примерно на 2% меньше циклов ЦП.


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