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 into
- array: 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)
