Outdated Version
You are viewing an older version of this section. View current production version.
INSERT_ALL
Inserts an array of records into a table in a single operation. Provides much better performance than doing singleton inserts in a LOOP.
Syntax
INSERT_ALL("table_name", array);
Arguments
table_name: the name of the table to insert the values intoarray: the array of values
Remarks
- The current database is used when calling
INSERT_ALL, so any tables specified intable_namemust reside in that database. Qualified table names, such asdatabase.table, will be treated as unqualified table names.
Example
The stored procedure, t2Slow, performs singleton inserts into table t2, while t2Fast inserts the same values using the INSERT_ALL function.
CREATE TABLE t2 (a INT, b INT);
DELIMITER //
CREATE OR REPLACE PROCEDURE t2Slow(count INT) AS
BEGIN
FOR i IN 1..count LOOP
INSERT INTO t2 VALUES (i, i);
END LOOP;
END //
CREATE OR REPLACE PROCEDURE t2Fast(count INT) AS
DECLARE
arr ARRAY(RECORD(a INT, b INT)) = CREATE_ARRAY(count);
x INT;
BEGIN
FOR i IN 0..(count-1) LOOP
arr[i] = ROW(i+1, i+1);
END LOOP;
x = INSERT_ALL("t2", arr);
end //
DELIMITER ;
-- Insert 1,000,000 rows into t2 using both stored procedures. Note: These query times are based on a cluster hosted on a single machine.
CALL t2Slow(1000000);
Query OK, 0 rows affected (3 min 31.12 sec)
CALL t2Fast(1000000);
Query OK, 0 rows affected (33.13 sec)