Estoy haciendo una consulta para recuperar una gran cantidad de ID (enteros). En lugar de iterar millones de veces a través del ResultSet y copiar todo uno por uno en una ArrayList, ¿hay alguna forma de recuperar todo simplemente como ArrayList?¿Cómo puedo recuperar un JDBC ResultSet como ArrayList?
entiendo que ResultSet se supone que debe ser iterado porque la implementación subyacente puede ser el almacenamiento en caché cosas, pero en mi situación sólo necesito todos los ID de inmediato. Sé que puedo configurar FetchSize en un número grande, pero aún tengo que recuperar los ID uno a uno.
Aclaración: la razón por la que quiero hacer esto es el rendimiento. La creación de perfiles me muestra que hacer ResultSet.next(), ResultSet.getInt() y ArrayList.add() millones de veces lleva bastante tiempo. Me imagino que la base de datos (estoy usando H2, que está escrito en Java) probablemente tiene la matriz o lista en algún lugar de la memoria, así que estoy buscando una manera de copiarla directamente en lugar de hacerlo a través de la interfaz iterativa ResultSet. .
Probablemente, ocuparse de millones de enteros lleva mucho tiempo. ¿Desea una int [] o primitiva como una lista en su lugar? Probablemente no se implementa directamente como una lista/int debido a las actualizaciones y la tabla general. –
int [] o List están bien. Básicamente estoy buscando una manera de decir a la base de datos: olvídate del almacenamiento en caché/carga lenta/etc., Solo dame los datos lo más rápido que puedas :) – Deckard
Hazte un perfil y ve dónde está el problema de rendimiento. (Oracle tiene métodos de matriz de columnas en su ResultSet, IIRC. No es lo que importa para H2.) –