在JDBC中设置语句提取大小或使用LIMIT子句触发SQL查询有什么区别?
答案 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答案。