1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java returning_JAVA中使用PostgreSQL的RETURNING语句来实现插入时快速获取insert id

java returning_JAVA中使用PostgreSQL的RETURNING语句来实现插入时快速获取insert id

时间:2020-04-02 09:34:59

相关推荐

java returning_JAVA中使用PostgreSQL的RETURNING语句来实现插入时快速获取insert id

很多时候,当插入一条记录后,希望马上获得插入的主键id,

不少获得这个id的方法是 select max(id) from tablename;

为了获得这个id需要多执行一次sql语句。

PostgreSQL提供了RETURNING语句在插入后立刻获得这个id,具体方法如下:

INSERT INTO test(name) values('name') RETURNING id;

使用JDBC调用方法

String sql = "INSERT INTO test(name) VALUES (?)";

PreparedStatement pstmt = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);

pstmt.setString(1, "name");

pstmt.executeUpdate();

ResultSet generatedKeys = pstmt.getGeneratedKeys();

if (generatedKeys.next()) {

long id = generatedKeys.getLong(1);

//logger.info("insert id :" + id);

}

使用10万条数据来测试 select max(id) 和RETURNING 方式,测试结果如下:

select max(id)方式:72秒

RETURNING 方式:47秒

RETURNING方式的性能是select max(id)方式的1.5倍

其他数据库Derby, H2, MySQL, SQL Server也支持

conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); 方式来提高插入后获取插入id的性能。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。