在 SQL(尤其是关系型数据库,如 MySQL、PostgreSQL、SQL Server 等)中,提升写入性能(INSERT / UPDATE / DELETE)通常可以从表设计、SQL 写法、事务控制、索引、数据库配置几个方面入手。下面按实用程度总结:
❌ 单条插入:
INSERT INTO t VALUES (1);
INSERT INTO t VALUES (2);
✅ 批量插入:
INSERT INTO t VALUES (1),(2),(3);
或:
INSERT INTO t SELECT ... FROM tmp;
批量写入可减少网络往返和事务开销
INSERT INTO ... VALUES (),(),()COPY 命令(最快)COPY t FROM '/data/file.csv';
INSERT 就别用 UPDATE❌ 每条 SQL 一个事务
✅ 合理批量提交(如 1000~5000 条/事务)
BEGIN;
-- 批量写入
COMMIT;
SET autocommit = 0;
索引越多,写入越慢
UNIQUEFOREIGN KEYINT 不用 BIGINTCHAR(固定) 不用 VARCHAR以 MySQL 为例:
innodb_flush_log_at_trx_commit = 2
sync_binlog = 0
innodb_buffer_pool_size = 大
⚠️ 会牺牲一定安全性,用于高吞吐场景
| 场景 | 建议 |
|---|---|
| 日志写入 | 批量 + 少索引 |
| 订单写入 | 事务 + 必要索引 |
| 数据导入 | COPY / LOAD |
| 高并发写 | 队列 + 分库 |
如果你能说明:
我可以给你针对性的优化方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。