Perdóneme por canalizar el desbordamiento de pila, pero “avanzado” es un término muy ambiguo.
Cuando entrevisté a los desarrolladores de aplicaciones que solían registrar de forma activa, me parece que las cláusulas básicas como HAVING son una revelación. Cuando se trata con Oracle Developers, las selecciones complejas, como las subconsultas pivotantes, plegadas y correlacionadas, se toman como una cuestión de rutina.
Cuando pienso en SQL avanzado, tiendo a pensar en cómo reescribir sentencias lentas en sentencias no obvias pero de mejor rendimiento. Por ejemplo, a veces reescribir una unión como una subconsulta puede hacer maravillas en cuanto al rendimiento. Pienso en el optimizador y en el plan explicativo y en cómo los datos pasan del disco a la caché y cómo se producen las clasificaciones y agrupaciones. Entonces, como Mohammed ya ha sugerido, tómese el tiempo para conocer los aspectos internos de su base de datos específica. Si eso pasa a ser Mysql, www.mysqlperformanceblog.com es un buen lugar para comenzar.
En el extremo de esta línea de pensamiento está la decisión de que el problema que se debe abordar está en ese 5% de las situaciones en las que el resultado debe construirse de manera procesal. Por lo tanto, una consulta “avanzada” se divide en partes simples y el código de la aplicación (php, java, etc.) hace el resto.
- ¿Qué colegios y universidades se están adaptando bien al crecimiento de la educación en línea?
- ¿Qué universidades ofrecen cursos de TEFL en línea?
- Maestría en línea?
- ¿Cuál es el mejor sitio para aprender Hadoop en línea?
- ¿Hay futuro para los MOOC corporativos?
Si realmente está buscando habilidades avanzadas, varios ya han sugerido que la experiencia es la clave. Estoy completamente de acuerdo. Pero, ¿cómo se obtiene esa experiencia? Una vez más debes saber sobre la base de datos. Cada uno tiene una forma de grabar consultas que se ejecutan durante más de un cierto tiempo. Encuentre esto, ajústelo a algún valor extremo (10 segundos) y vea qué obtiene en el registro. Optimice estos y, al hacerlo, desarrolle las habilidades para buscar información sobre su DBMS en particular. Una vez que haya optimizado estas consultas y rastreado cómo arreglar la aplicación, tiene una habilidad práctica con una aplicación práctica y un resultado valioso para su equipo. Luego baja el umbral de registro y vuelve a intentarlo. Después de cada lanzamiento, asegúrese de rotar sus registros y ver si surgen nuevos problemas. Sintonízalos y trabaja con el equipo para mejorar la aplicación.
Al final, saber SQL avanzado solo es valioso si le permite realizar contribuciones reales a la aplicación. Un DBA que escriba killer SQ solo es útil si ese código puede implementarse en el mundo real del equipo al que sirve.
Reconozco que esto no es una respuesta a la pregunta intencionada. Espero que sirva para enmarcar mejor la pregunta para una respuesta más prescriptiva.