POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Leetcode SQL 185: ¿La mejor solución sigue siendo lenta?

## Leetcode SQL 185: ¿La mejor solución sigue siendo lenta?

Publicado el 05/09/2025

LeetCode SQL Optimización funciones de ventana vs subconsultas

Quienes practican en LeetCode conocen muy bien el reto 185 Department Top Three Salaries incluido en el Top SQL 50. La plataforma propone dos enfoques correctos para resolverlo y aquí comparamos su comportamiento en escenarios de datos reales con el objetivo de extraer conclusiones prácticas de rendimiento y mantenibilidad.

Comparativa de soluciones oficiales

Solución 1 método tradicional con subconsulta correlacionada. La idea es evaluar fila a fila cuántas personas del mismo departamento tienen un salario mayor que el empleado actual y conservar el registro solo si hay menos de 3 por encima. Funciona, pero implica múltiples evaluaciones y escaneos repetidos sobre la tabla de empleados.

Solución 2 método moderno con funciones de ventana. Se emplea DENSE_RANK con PARTITION BY por departamento y ORDER BY salario de forma descendente para asignar un rango por salario dentro de cada departamento y después se filtran los rangos menores o iguales a 3. Es concisa, fácil de leer y aprovecha optimizaciones del motor.

Prueba de rendimiento con datos de diez mil filas

Entorno de prueba. Se crean 10 departamentos y se insertan 1000 empleados por departamento generando 10000 filas. El conjunto incluye identificadores, nombres y salarios aleatorizados dentro de un rango típico de ejemplo. Con este volumen ya se aprecian diferencias sustanciales entre ambos enfoques.

Resultados. La consulta con DENSE_RANK se ejecutó en milisegundos, mientras que la versión con subconsulta correlacionada tardó más de 5 segundos. Esta brecha es inaceptable en sistemas de producción sensibles a la latencia o con alta concurrencia, y se agrava conforme crece el volumen de datos.

Por qué usar funciones de ventana en MySQL 8 en adelante

- Evitan escaneos y cálculos repetidos. Los patrones con subconsultas tienden a recalcular y a leer varias veces la misma información. Las funciones de ventana realizan los cálculos analíticos en un solo paso lógico.

- Reducen resultados intermedios y tablas temporales. Menos materialización se traduce en menor uso de memoria y disco, y en planes de ejecución más estables.

- Reutilizan cómputo por partición y orden. Bajo las mismas condiciones de PARTITION BY y ORDER BY, el motor puede compartir resultados y minimizar trabajo redundante.

SQLFLASH y la optimización automática

Herramientas de asistencia a SQL como SQLFLASH demuestran que, aunque haya variantes de sintaxis, el resultado es consistente y la versión con funciones de ventana suele ganar en claridad y velocidad. En contextos de inteligencia de negocio y analítica avanzada, esta clase de optimizaciones marca la diferencia.

Buenas prácticas adicionales

- Asegura índices adecuados en columnas de partición y filtrado como departmentId y salary para favorecer el plan de ejecución.

- Prefiere DENSE_RANK cuando necesites top N por grupos con salarios repetidos. Si lo que buscas es posiciones estrictas sin empates, RANK u otras funciones pueden encajar mejor.

- Valida con datos realistas. La prueba con 10000 filas muestra la diferencia, pero en tablas con millones el impacto es mucho mayor.

Cómo te ayuda Q2BSTUDIO

En Q2BSTUDIO desarrollamos aplicaciones a medida y software a medida con foco en rendimiento, escalabilidad y seguridad. Integramos inteligencia artificial e ia para empresas en pipelines de datos, implementamos servicios inteligencia de negocio y cuadros de mando con power bi, y diseñamos arquitecturas eficientes en servicios cloud aws y azure. Si necesitas analítica de datos, optimización SQL o integración de agentes IA en tus procesos, nuestro equipo puede ayudarte a convertir la complejidad técnica en impacto real de negocio.

Si buscas un desarrollo sólido orientado a datos y rendimiento, descubre cómo impulsamos proyectos de software a medida y aplicaciones a medida con arquitecturas modernas visitando desarrollo de aplicaciones y software multiplataforma. Para potenciar reporting, modelos semánticos y gobierno del dato, explora nuestros servicios de inteligencia de negocio con Power BI.

Resumen y recomendaciones

1 Prioriza funciones de ventana siempre que tu motor las soporte. En MySQL 8 en adelante y en la mayoría de sistemas modernos son la opción superior para top N por partición, rankings, acumulados y comparativas entre filas.

2 La versión con DENSE_RANK ofrece claridad, mantenibilidad y mejoras de tiempo de ejecución medibles frente a subconsultas correlacionadas.

3 Acompaña con una estrategia integral de datos. Desde ciberseguridad y cumplimiento hasta automatización de procesos, tu plataforma debe ser consistente extremo a extremo. En Q2BSTUDIO cubrimos de forma transversal inteligencia artificial, ciberseguridad, agentes IA, power bi, servicios cloud aws y azure y automatización, para que el rendimiento SQL se traduzca en resultados sostenibles.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio