Cassandra Java驱动程序- QueryBuilder API与PreparedStatements之间的区别

17
1个回答

22

如果您重复使用PreparedStatement,它会提高性能,因为要执行的内容已经存储在服务器端。您只需要绑定新的具体值并重新执行该语句。

查询构建器是创建一个字符串语句以原样执行而不需要任何准备的更高级的方法。

从性能角度来看,第一种选择最快,第二种和第三种相同:

// below prepared statement has already been prepared, we're now just re-using
PreparedStatement ps = session.prepare("SELECT * FROM users WHERE uname=?");

1) session.execute(ps.bind('david');
2) session.execute("SELECT * FROM users WHERE uname=david");
3) session.exectute(QueryBuilder.select()
                                .all()
                                .from("users")
                                .where(QueryBuilder.eq('uname', 'david'))

不太确定这是否相关,但这里有一个很好的例子,展示了如何从使用查询构建器构建字符串执行的查询迁移到使用预构建准备语句在这个ycsb客户端中。


4
注意,你可以从QueryBuilder链创建PreparedStatement对象,因此非常容易从QueryBuilder转移到PreparedStatement - Drew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接