necesito realizar lo siguiente:
Contar el total de registros de una vista (o tabla, en mi caso ya es una vista):
Código SQL:
Ver original
SELECT COUNT(*) FROM vista_general_personas
el resultado de ese count lo quiero combinar o cruzar como se interprete una segunda consulta, del tipo:
SELECT * FROM vista_general_personas LIMIT 30 OFFSET (resultadocount)-30
he pasado por separado las consultas desde PHP y si me funciona, pero es una consulta muy lenta, porque estoy evaluando arriba de 140mil registros y ésta sigue creciendo cada día, lo que necesito es mostrar los últimos 30 registros de la base de datos a manera de resumen en una página, pero hacer un clásico ORDER BY id DESC Limit 30 consume mucho tiempo y deseo optimizarlo, hice algunas pruebas desde PHP y me funciona como ya lo mencioné, pero ahora quiero hacer un SP o una Función que viva en el servidor, para ello buscando información trataba de hacer lo siguiente:
Código SQL:
Ver original
DELIMITER $$ DROP FUNCTION IF EXISTS totales $$ CREATE FUNCTION totales() BEGIN DECLARE t INT; SELECT COUNT(*) INTO t FROM vista_general_personas; SET @valor = t - 30; SELECT * FROM vista_general_personas LIMIT 30 OFFSET valor; END $$ DELIMITER ;
pero no lo pude hacer funcionar, se que debe estar mal, pero no se como solucionarlo, agradecería su apoyo a cualquiera que pudiera apoyarme, muchas gracias.