java - 这两者之间哪个更好?

标签 java mysql servlets

我正在尝试从 board 获取 COUNT(*),

但我想知道以下代码的性能会更好:

Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM board_*** WHERE article_category = " + foo);

PreparedStatement pstmt = connection.prepareStatement("SELECT COUNT(*) FROM board_*** WHERE article_category = ?");
pstmt.setInt(1 , foo);
ResultSet rs = pstmt.executeQuery();

很难决定..

最佳答案

使用 PreparedStatement 总是好的。因为如果更安全(来自 sql 注入(inject))并且在性能方面它会更快,因为当您使用绑定(bind)变量时,数据库服务器本身会缓存参数并提高查询性能。

如果你对这里更感兴趣,可以阅读一篇好论文

http://www.oracle.com/technetwork/database/performance/designing-applications-for-performa-131870.pdf

关于java - 这两者之间哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53449248/

相关文章:

mysql - 在 MySQL 中存储 Double.POSITIVE_INFINITY(EJB 实体/JBoss)

java - Spring 3.0 中获取 servlet 异常

java - 从 session 属性获取数据返回空指针

java - 如何学习Java Swing并快速制作GUI?

java - 签署 Jar 文件

mysql - 在 On 语句中使用 If 语句

java - HTTP 状态 500 - Servlet.init()

java - 如何配置 Spring 以使用 aspectj 进行事务处理?

java - java util 类中带有 BASE64 的 SHA1 无法生成正确的密码

javascript - 过滤 JSON 对象比通过 ajax 查询数据库更快吗?