Aquí hay una idea. Puede descargar las costosas operaciones a una actualización cuando el tendero inserta/actualiza nuevas ofertas en lugar de cuando el usuario final selecciona los datos para ver. Esto puede parecer una forma no dinámica de manejar los datos de clasificación, pero puede aumentar la velocidad. Y, como sabemos, siempre hay una compensación entre el rendimiento y otros factores de codificación.
Cree una tabla para contener el siguiente y el anterior para cada oferta y cada opción de clasificación. (Alternativamente, puede almacenar esto en la tabla de ofertas si siempre tendrá tres opciones de clasificación:la velocidad de consulta es una buena razón para desnormalizar su base de datos)
Entonces tendrías estas columnas:
- Tipo de clasificación (Sin ordenar, Precio, Clase y Desc. de precio)
- ID de oferta
- Identificación anterior
- Siguiente identificación
Cuando se consulta la información detallada de la página de detalles de la oferta desde la base de datos, NextID y PrevID serían parte de los resultados. Por lo tanto, solo necesitaría una consulta para cada página de detalles.
Cada vez que se inserta, actualiza o elimina una oferta, deberá ejecutar un proceso que valide la integridad/precisión de la tabla de tipos de clasificación.