📜  mariadb 在一次查询中插入 10000 行 - SQL (1)

📅  最后修改于: 2023-12-03 15:17:32.423000             🧑  作者: Mango

以'MariaDB 在一次查询中插入 10000 行'为题

MariaDB是一款用于管理和存储数据的开源关系数据库管理系统。在实际应用中,我们需要将大量的数据插入到数据库中。这种情况下,我们需要使用高效且不影响数据完整性的方法来实现操作。

在一次查询中插入10000行数据的优势

将大量数据一次性地插入到数据库中,相比分批次插入的方式,有以下几个优势:

  1. 减少数据库连接次数。每一次连接都需要消耗一定的时间和资源,一次性插入可以节省不必要的连接次数,从而提高效率。

  2. 提高数据插入速度。一次性插入可以使用事务处理,可以进行批量操作,略过了单次插入的冗余操作,有效减少了数据插入的时间。

  3. 保证数据完整性。在使用事务处理时,可以将一系列操作作为一个整体进行提交,如果其中任何一步失败,则整个操作都会回滚,保证数据的完整性。

实际操作
1. 准备测试数据

创建一个数据库和一个名为test的数据表,并插入10000条数据:

CREATE DATABASE testdb;
USE testdb;

CREATE TABLE test (
  id INT PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  age INT NOT NULL
);

DELIMITER $$

CREATE PROCEDURE InsertTestData()
BEGIN
  DECLARE i INT DEFAULT 1;
  WHILE i <= 10000 DO
    INSERT INTO test (id, name, age) VALUES (i, CONCAT('name', i), i);
    SET i = i + 1;
  END WHILE;
END$$
DELIMITER ;

CALL InsertTestData();
2. 执行一次性插入

可以使用INSERT INTO ... VALUES的方式,直接将多组数据一次性插入到数据库中。如下所示:

INSERT INTO test (id, name, age) VALUES
  (10001, 'name10001', 22),
  (10002, 'name10002', 23),
  ...
  (20000, 'name20000', 32);

或者,通过INSERT INTO ... SELECT ... 的方式,将查询出的数据一次性插入到数据库中。如下所示:

INSERT INTO test (id, name, age)
SELECT id+10000, CONCAT('name', id+10000), age+10
FROM test
WHERE id <= 10000;
总结

一次性插入是一种高效且稳定的数据插入方式,可以保证数据的完整性和数据插入的速度。在使用时,需要注意事务处理和数据格式的正确性,以免出现异常情况。