object prepared_table
Execute a statement that has been prepared with box.prepare().
Parameter prepared_table should be the result from box.prepare().
Parameter extra-parameters should be an optional table to match
placeholders or named parameters in the
statement.
There are two ways to execute: with the method or with the statement id.
That is, {prepared_table}:execute() and
box.execute({prepared_table}.stmt_id)
do the same thing.
Example: here is a test. This function inserts a million rows in a table using a prepared INSERT statement.
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()
Take note of the elapsed time. Now change the line with the loop to:
for i=1,1000000 do box.execute([[INSERT INTO t VALUES (?);]], {i}) end
Run the function again, and take note of the elapsed time again. The
function which executes the prepared statement will be about 15% faster,
though of course this will vary depending on Tarantool version and
environment.
Undo the result of an earlier box.prepare() request. This is equivalent to standard-SQL DEALLOCATE PREPARE.
Parameter prepared_table should be the result from box.prepare().
There are two ways to unprepare: with the method or with the statement
id. That is, {prepared_table}:unprepare() and
box.unprepare({prepared_table}.stmt_id)
do the same thing.
Tarantool strongly recommends using unprepare as soon as the immediate
objective (executing a prepared statement multiple times) is done, or
whenever a prepared statement expires. There is no automatic eviction
policy, although automatic unprepare will happen when the session
disconnects (the session's prepared statements will be removed from the
prepared-statement cache).