MySQL 高级:批量插入百万级数据量【含代码示例】
-- 批量插入百万级数据量的示例
-- 假设我们有一个表 `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语句构造和数据库压力,特别适合需要快速插入大量数据的场景。
评论已关闭