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

объект prepared_table

prepared_table

execute([extra-parameters])

Выполнение инструкции, подготовленной с помощью box.prepare().

Параметр prepared_table должен быть результатом выполнения box.prepare().

Параметр extra-parameters — необязательная таблица для сопоставления плейсхолдерам или именованным параметрам в инструкции.

Выполнить инструкцию можно двумя способами: с помощью метода или с помощью идентификатора инструкции. То есть {prepared_table}:execute() и box.execute({prepared_table}.stmt_id) делают одно и то же.

Пример: ниже приведен тест. Эта функция вставляет миллион строк в таблицу с использованием подготовленной инструкции INSERT.

function f()  local p, start_time  box.execute([[DROP TABLE IF EXISTS t;]])  box.execute([[CREATE TABLE t (s1 INTEGER PRIMARY KEY);]])  start_time = os.time()  p = box.prepare([[INSERT INTO t VALUES (?);]])  for i=1,1000000 do p:execute({i}) end  p:unprepare()  end_time = os.time()  box.execute([[COMMIT;]])  print(end_time - start_time) -- elapsed timeendf()

Зафиксируйте затраченное время. Теперь измените строку с циклом на: for i=1,1000000 do box.execute([[INSERT INTO t VALUES (?);]], {i}) end Запустите функцию снова и снова зафиксируйте затраченное время. Функция, выполняющая подготовленную инструкцию, будет работать примерно на 15% быстрее, хотя, конечно, это зависит от версии Tarantool и окружения.

unprepare()

Отмена результата ранее выполненного запроса box.prepare(). Это эквивалентно DEALLOCATE PREPARE в стандартном SQL.

Параметр prepared_table должен быть результатом выполнения box.prepare().

Отменить подготовку можно двумя способами: с помощью метода или с помощью идентификатора инструкции. То есть {prepared_table}:unprepare() и box.unprepare({prepared_table}.stmt_id) делают одно и то же.

Настоятельно рекомендуется вызывать unprepare сразу после выполнения непосредственной задачи (многократного выполнения подготовленной инструкции) или при истечении срока действия подготовленной инструкции. Автоматическая политика вытеснения отсутствует, однако автоматический вызов unprepare выполняется при отключении сессии (подготовленные инструкции сессии будут удалены из кэша подготовленных инструкций).