在JDBC中设置语句提取大小或使用LIMIT子句触发SQL查询之间有什么区别?

时间:2009-09-17 18:26:15

标签: java sql jdbc

在JDBC中设置语句提取大小或使用LIMIT子句触发SQL查询有什么区别?

2 个答案:

答案 0 :(得分:13)

SQL LIMIT会将SQL查询结果限制在指定范围内。您可以使用它来显示前X个结果数,或显示X - Y结果的范围。

fetch size是当您使用ResultSet滚动查询next()时,JDBC驱动程序一次从数据库中物理检索的行数。例如,将查询提取大小设置为100.检索第一行时,JDBC驱动程序将检索前100行(如果少于100行满足查询,则检索所有行)。检索第二行时,JDBC驱动程序仅返回本地内存中的行 - 它不必从数据库中检索该行。此功能通过减少数据库的调用次数(通常是网络传输)来提高性能。

因此,即使将JDBC的提取大小设置为SQL LIMIT子句,与使用LIMIT强制SQL查询的最大区别在于,使用JDBC时,您实际上仍然能够浏览所有结果。

答案 1 :(得分:0)

SQL LIMIT首先应用,当时SQL Server正在构建结果集作为查询的答案。它可以(并且通常具有)对所使用的查询计划的影响,因此也影响SQL服务器响应时间。结果集只包含与限制相关的行 - 您无法获取更多内容。

当结果集的内容转移到客户端时,将获取提取大小。有关详细信息,请参阅Pascals答案。