Por supuesto, ordenar una consulta aleatoria lleva tiempo, pero si tiene problemas con la misma consulta paginada que se usa regularmente, hay algún problema con la configuración de la base de datos (indexación incorrecta/ninguna, poca memoria etc. No soy un administrador de base de datos) o está haciendo paginación seriamente incorrecta:
Terriblemente incorrecto: por ejemplo haciendo select * from hugetable where somecondition;
en una matriz obteniendo el recuento de páginas con el array.length eligen los índices relevantes y dicard la matriz, y luego repiten esto para cada página ... Eso es lo que llamo seriamente incorrecto.
La mejor solución dos consultas: una obteniendo solo el conteo y luego otra obteniendo resultados usando limit
y offset
. (Algunos servidores patentados no estándar-sql pueden tener una opción de consulta, no lo sé)
La mala solución podría funcionar muy bien en las tablas pequeñas (de hecho, no es impensable que sea más rápida en tablas muy pequeñas, porque el sobrecargar dos consultas es más grande que obtener todas las filas en una consulta. No digo que es así que ...) pero tan pronto como la base de datos comienza a crecer, los problemas se vuelven obvios.
Si mira el título, la pregunta tiene sentido, cuando lee la pregunta en sí, deja de tener sentido. –