объект prepared_table
Выполнение инструкции, подготовленной с помощью box.prepare().
Параметр prepared_table должен быть результатом выполнения
box.prepare().
Параметр extra-parameters — необязательная таблица для сопоставления
плейсхолдерам или именованным параметрам в
инструкции.
Выполнить инструкцию можно двумя способами: с помощью метода или с
помощью идентификатора инструкции. То есть
{prepared_table}:execute() и
box.execute({prepared_table}.stmt_id)
делают одно и то же.
Пример: ниже приведен тест. Эта функция вставляет миллион строк в таблицу с использованием подготовленной инструкции INSERT.
function f()local p, start_timebox.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}) endp: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 и
окружения.
Отмена результата ранее выполненного запроса box.prepare(). Это эквивалентно DEALLOCATE PREPARE в стандартном SQL.
Параметр prepared_table должен быть результатом выполнения
box.prepare().
Отменить подготовку можно двумя способами: с помощью метода или с
помощью идентификатора инструкции. То есть
{prepared_table}:unprepare() и
box.unprepare({prepared_table}.stmt_id)
делают одно и то же.
Настоятельно рекомендуется вызывать unprepare сразу после выполнения
непосредственной задачи (многократного выполнения подготовленной
инструкции) или при истечении срока действия подготовленной инструкции.
Автоматическая политика вытеснения отсутствует, однако автоматический
вызов unprepare выполняется при отключении сессии (подготовленные
инструкции сессии будут удалены из кэша подготовленных инструкций).