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

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

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

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

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

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

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