INSERT 语句
INSERT 语句是在关系型数据库中加载数据的标准方式。使用 INSERT 时,数据值通常按行提供。虽然简单,但解析与处理单条 INSERT 语句会带来明显开销,因此在需要批量写入时,大量逐行插入会非常低效。
最佳实践:经验法则是,当插入的行数超过几行时,应避免大量逐行的
INSERT语句(也就是避免在循环中执行INSERT)。批量插入时,尽量让每条语句插入尽可能多的数据。
如果你必须在循环中使用 INSERT 语句加载数据,请避免在自动提交(auto-commit)模式下执行。每次提交之后,数据库都需要把变更同步到磁盘以确保数据不丢失。在自动提交模式下,每条语句都会被包裹在单独的事务中,这意味着每条语句都会调用一次 fsync。在批量加载场景下这通常没有必要,并会显著拖慢程序。
提示:如果你确实必须在循环中使用
INSERT来加载数据,请用BEGIN TRANSACTION与COMMIT将它们包起来。
语法
下面示例展示了如何使用 INSERT INTO 向表中写入数据:
CREATE TABLE people (id INTEGER, name VARCHAR);
INSERT INTO people VALUES (1, 'Mark'), (2, 'Hannes');
更详细的说明与语法图请参阅 INSERT 语句页面。