MySQL Statement Simple Optimization


常用 SQL 语句优化

1、批量插入

提到批量插入,Java 最简单的方法的方法就是写个循环,每一次向数据库插入一条记录,这种方式每次都要和数据库建立一次连接,最后释放,非常麻烦。

MySQL 提供了一种非标准 sql 的语法格式:

INSERT INTO `user` (username, `password`, amount) 
VALUES ('赵六', '111111', 2), ('张三', '222222', 3);

用逗号隔开多条记录就可以实现批量插入。

优化一

使用递增的主键去有序插入:

INSERT INTO `user` (id, username, `password`, amount) 
VALUES (1, '赵六', '111111', 2), (2, '张三', '222222', 3);

优化二

在事务中插入:

START TRANSACTION;

INSERT INTO `user` (username, `password`, amount) 
VALUES ('赵六', '111111', 2), ('张三', '222222', 3);

COMMIT;

注:可以结合上面两种方式。

2、判断是否存在

常规方式是使用聚集函数统计:

SELECT COUNT(*) FROM `user`;

这种方式在大量数据时效率会变低,可以使用 limit 优化,注意这也是 MySQL 特有的:

SELECT 1 FROM `user` WHERE amount = 2 LIMIT 1;

但是需要注意的是在 Java 中要用 Integer 去接收结果,因为查询不到就会返回 N/A,Java 解析为 null。


Author: NaiveKyo
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source NaiveKyo !
  TOC