获取 ResultSet 大小的最佳方法
Best Approach to get `ResultSet` size
在 Java 中获得 RestultSet
大小的最佳方法(速度)是什么,所以我可以将它们存储在 Array
中,我需要在创建之前指定它的大小,我已找到以下内容:
- 调用
ResultSet.last()
,然后调用ResultSet.getRow()
。
- 使用
next()
遍历 ResultSet
,同时有一个计数器。
- 对任何给定查询执行
SELECT COUNT
查询。
- 每次查询后执行
FOUND_ROWS()
。
- 将结果读入
ArrayList
,然后将其转换为数组。
唯一的选择是#5:将数据放入 ArrayList
并使用 toArray
提取数组。
选项 #3 和 #4(额外查询)在速度方面不是一个好主意,因为无论您的数据库有多快,数据库查询都有固有的延迟。
选项 #1 和 #2 只是个坏主意; ResultSet
意味着在一个方向上迭代。虽然您 可以 将光标移动到其他方向,但大多数 JDBC 驱动程序执行此操作的效果不会太好。
最后,您应该真的重新考虑返回数组。 Java 数组非常适合创建新的集合数据类型和高性能库,但对于大多数商业用途而言,它们不如标准集合 API。
在 Java 中获得 RestultSet
大小的最佳方法(速度)是什么,所以我可以将它们存储在 Array
中,我需要在创建之前指定它的大小,我已找到以下内容:
- 调用
ResultSet.last()
,然后调用ResultSet.getRow()
。 - 使用
next()
遍历ResultSet
,同时有一个计数器。 - 对任何给定查询执行
SELECT COUNT
查询。 - 每次查询后执行
FOUND_ROWS()
。 - 将结果读入
ArrayList
,然后将其转换为数组。
唯一的选择是#5:将数据放入 ArrayList
并使用 toArray
提取数组。
选项 #3 和 #4(额外查询)在速度方面不是一个好主意,因为无论您的数据库有多快,数据库查询都有固有的延迟。
选项 #1 和 #2 只是个坏主意; ResultSet
意味着在一个方向上迭代。虽然您 可以 将光标移动到其他方向,但大多数 JDBC 驱动程序执行此操作的效果不会太好。
最后,您应该真的重新考虑返回数组。 Java 数组非常适合创建新的集合数据类型和高性能库,但对于大多数商业用途而言,它们不如标准集合 API。