Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

box.prepare()

box.prepare(sql-statement)

Подготавливает SQL-запрос, переданный в параметре sql-statement. Синтаксис и требования для box.prepare такие же, как для box.execute().

Параметры:

Возвращает

prepared_table — с идентификатором, методами и метаданными

Тип возвращаемого значения

table

box.prepare компилирует SQL-запрос в байт-код и сохраняет байт-код в кэше. Поскольку компиляция занимает значительное время, подготовка запроса повышает производительность при многократном выполнении.

Если box.prepare завершается успешно, prepared_table содержит:

  • stmt_id: integer — идентификатор, сгенерированный с помощью хеширования строки запроса
  • execute: function
  • params: map [name : string, type : string] — описания параметров
  • unprepare: function
  • metadata: map [name : string, type : string] (присутствует только для запросов SELECT или PRAGMA и имеет то же содержимое, что и метаданные результирующего набора для box.execute)
  • param_count: integer — количество параметров

Полученный результат может использоваться в prepared_table:execute() и в prepared_table:unprepare().

Кэш подготовленных запросов (также называемый хранилищем подготовленных запросов) является «общим», то есть существует один кэш для всех сессий. Однако сессия X не может выполнить запрос, подготовленный сессией Y. Для мониторинга кэша см. box.info().sql. Для изменения размера кэша используйте sql.cache_size.

Подготовленные запросы «устаревают» (становятся недействительными), если любой объект базы данных удаляется, создается или изменяется — даже если объект не упоминается в SQL-запросе, даже если создание, удаление или изменение откатывается, даже если создание, удаление или изменение выполняется в другой сессии.