java - JDBC海量数据供选择

标签 java oracle jdbc prepared-statement where-clause

在我的 Java 应用程序中,我必须使用 WHERE 子句从 Oracle 数据库中选择数据。我将使用准备好的语句。 哪个更好,我应该使用

SELECT column_name FROM table_name WHERE column_name = ?
SELECT column_name FROM table_name WHERE column_name = ?
SELECT column_name FROM table_name WHERE column_name = ?
.
.
.
SELECT column_name FROM table_name WHERE column_name = ?

SELECT column_name FROM table_name WHERE column_name IN (?, ?, ?, ... ?)

我需要在 WHERE 子句中使用的数据计数可以从 01 到 500 不等。

最佳答案

每个查询执行都会带来一些处理/解析/网络开销,因此通过在 IN 中提供值列表,可以轻松地在单个查询中检索多行,从而加快一个数量级条款。例如,Oracle 必须执行 "soft parse" (语法和语义验证、缓存查找),即使查询是可重用的(使用绑定(bind)变量),就像第一个示例中的情况一样。

您应该注意,Oracle 的 IN 子句中可以包含的绑定(bind)变量的固定限制为 1000 个。

关于java - JDBC海量数据供选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35439181/

相关文章:

Java DecimalFormat 在格式化 double 时失去精度

java - 创建多个AsyncTask

sql - 如何在日期字段中插入 NULL Oracle SQL Developer

java - 选择数组元素 PostgreSQL

java - Bean验证: Does @Digits validator support Double?

java - 后缀和 openJDK 11 : "No appropriate protocol (protocol is disabled or cipher suites are inappropriate)"

java - SQL 错误 17268 : Year out of range (Java/Spring)

sql - 如何将海量数据查询拆分为多个查询

java.sql.SQLIntegrityConstraintViolationException Servlet

java - HashedSession 无法转换为 JDBCSessionManager$Session