常用 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。