是否有任何 jar 可用于在 java 中更快地执行 sql 查询? [关闭]
Posted
技术标签:
【中文标题】是否有任何 jar 可用于在 java 中更快地执行 sql 查询? [关闭]【英文标题】:Is there any jar is available to execute sql queries faster in java? [closed] 【发布时间】:2016-07-27 11:32:21 【问题描述】:在 java 中,我使用 Prepared 语句从数据库中获取值。在这里我使用了索引,然后我也绑定了值,我使用了以下查询
Select pname from project where pid="12547";
像这样我需要从表项目中获取大约 3000 个“pname”。对于此执行,它需要更多时间。有没有可以在java中更快地执行sql查询的jar?
【问题讨论】:
使用select pname from project where pid IN(xx, yy, ...)
?
没有这样的罐子。如上一个答案中所建议的,您可以减少查询的数量。如果由于某种原因,您需要按顺序进行这些调用,那么您需要调整 DB(在 pid 上添加索引以防它不是主键等)。
我需要从 java 执行此语句,以及如何使用准备好的语句绑定 [IN()] 内的值。因为这些值是动态的..
【参考方案1】:
您为什么要为这 3000 个 pid 执行单独的查询。如果您确定要执行那么多查询,可以切换到最适合您逻辑的任何查询:
select pname from project where pid BETWEEN 1000 and 4000;
select pname from project where pid IN (1000, 1001, ...);
select pname from project where pid > 2000 and pid < 5000;
您可以在 where 子句中使用这些来修改您的 SQL 查询
Operator Description
= Equal
<> Not equal. Note: In some versions of SQL this operator may be written as !=
> Greater than
< Less than
>= Greater than or equal
<= Less than or equal
BETWEEN Between an inclusive range
LIKE Search for a pattern
IN To specify multiple possible values for a column
编辑
如果你的价值观是动态的,那么
String selectSQL = "select pname from project where pid IN(?, ?);";
dbConnection = getDBConnection();
preparedStatement = dbConnection.prepareStatement(selectSQL);
preparedStatement.setInt(1, 2000);
preparedStatement.setInt(2, 5000);
// execute select SQL stetement
ResultSet rs = preparedStatement.executeQuery();
【讨论】:
我需要从 java 执行此语句,以及如何使用准备好的语句绑定 [IN()] 中的值。因为这些值是动态的.. 我已经更新了我的答案,如果你的价值观是动态的,请参考它。 感谢您的回答,但您特别提到了两个问号。实际上该计数也必须是动态的,请尝试帮助我... 那是实际的代码。那些问号?
称为位置参数。请访问this 教程以深入了解这个东西是如何工作的。
嗯,我已经完成了,但在我的代码中我使用了完全动态的值,所以不能手动传递这些值。 String sql = " SELECT [PName] FROM Project where [Pid]=?"; preparestmt = conn.prepareCall(sql);准备好的 .setInt(1, PId);就像我以前用过的一样。以上是关于是否有任何 jar 可用于在 java 中更快地执行 sql 查询? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章