Realmente desconozco la respuesta exacta a tu pregunta. Sin embargo te comento que, como regla general las consultas SQL deben ser mucho más selectivas.
Nadie quiere ni necesita ver un millón de registros. Las consultas deben planearse de tal suerte que regresen idealmente no más de 200 o 300 registros, ya en un caso extremo 1000 0 2000 registros. Más de eso va más allá de lo que un humano está dispuesto a recorrer- incluso cuando así lo crean.
Ahora bien, a falta de otra solución podrías mientras tanto usar la instrucción LIMIT para paginar los resultados:
Código:
SELECT * FROM tabla LIMIT :start, 100
Comienzas con start = 0 y conforme el suario pida más registros incrementas start en 100.
De esta manera visualizas virtualmente todos los registros,
de 100 en 100. El usuario no tiene que esperar una tiempo absurdo y cuando se canse (que será por ahí de las 10 páginas) podrá cerrar la ventana y se acabó.
// Saludos