MySQL 高级:批量插入百万级数据量【含代码示例】
    		       		warning:
    		            这篇文章距离上次修改已过448天,其中的内容可能已经有所变动。
    		        
        		                
                
-- 批量插入百万级数据量的示例
-- 假设我们有一个表 `huge_table`,包含 `id` 和 `data` 两个字段
-- 首先,清空表以便进行新的批量插入操作
TRUNCATE TABLE huge_table;
 
-- 然后,使用多值插入的方式来提高效率
INSERT INTO huge_table (id, data) VALUES
(1, 'Sample data 1'),
(2, 'Sample data 2'),
...
(n, 'Sample data n');
 
-- 假设我们要插入100万条数据,可以分批进行
-- 每个批次插入的数据量,可以根据实际情况调整
SET @batch_size = 5000;
SET @current_batch = 0;
 
while @current_batch < 1000000 do
    INSERT INTO huge_table (id, data)
    SELECT 
        (@batch_size * @current_batch) + id + 1,
        CONCAT('Sample data ', @batch_size * @current_batch + id + 1) 
    FROM 
        (SELECT @row := @row + 1 as id
        FROM 
            (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) as init
        JOIN 
            (SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5
             UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) as init2
        JOIN 
            (SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5
             UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) as init3
        JOIN 
            (SELECT @row := -1) as init4) as numbers
    WHERE 
        @row < @batch_size;
    SET @current_batch = @current_batch + 1;
end while;
 
-- 最后,查询表以验证数据是否已正确插入
SELECT COUNT(*) FROM huge_table;这个代码示例使用了一个循环来插入数据,每个批次包含一定数量的行。这种方法可以避免大量的SQL语句构造和数据库压力,特别适合需要快速插入大量数据的场景。
评论已关闭