¿Cuáles son las fuentes en línea para desarrollar habilidades avanzadas de SQL?

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.

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.

Dados los índices adecuados es muy esencial en las bases de datos. Para las tablas que no están indexadas correctamente, para buscar cualquier fila o columna lleva mucho tiempo escanear las páginas completas físicamente. Por lo tanto, agregar índices adecuados a la base de datos da como resultado que se realicen búsquedas de datos de alta velocidad en cualquier tabla de columnas con cualquier número clave. Junto con las claves primarias, si el árbol indexado contiene algunas otras columnas adicionales, entonces es necesario un índice de cobertura para realizar una búsqueda rápida de esas columnas adicionales con cualquier número de la clave principal. Estos índices cubiertos deben contener un número mínimo de columnas Porque, en caso de que agregue más cantidad de columnas, la portada se sobrecargará, lo que resultará en un proceso más lento. Asegúrese de no hacer que los índices de portada sean realmente pesados. Tutorial de SQL, Tutorial de SQL en línea | Intellipaat.com

La ejecución de SQL en el uso del mismo índice y las estructuras de tabla será diferente en diferentes servidores, es decir, la forma de ejecución en el servidor de prueba será completamente diferente a la de los otros servidores. Los índices en diferentes servidores darán diferentes influencias a los servidores. Por ejemplo, un índice creado para el Servidor A no ayudará ni promocionará al Servidor B más que al Servidor A. Los planes que usan índices más nuevos se desempeñan mejor que aquellos con los índices más antiguos. Así que asegúrese de que los índices más nuevos se asignen al plan de ejecución para que el servidor de ejecución se ejecute más rápido.
Pero, por lo general, el servidor de prueba usa los índices más nuevos antes del servidor de ejecución. Por lo tanto, para que la ejecución se ejecute más rápido, las columnas del plan de ejecución deben entregarse al servidor de prueba y luego se deben crear nuevos índices. Por lo tanto, cuando el servidor de prueba utilizará esto, el ejecutor lo usará indirectamente y, por lo tanto, el ejecutor tendrá un mejor desempeño.

Hay dos lados para esta pregunta.

Primero, al conocer SQL avanzado, uno podría significar poder convertir cualquier declaración de consulta compleja en una consulta SQL, incluso con restricciones dadas en el DBMS.

Por ejemplo, dado este esquema:

  • Curso (cid)
  • Toma (sid, cid)
  • Estudiante (sid, ciudad) – estudiantes nacidos en una ciudad determinada: asumimos que todos viven en el mismo país. Sid es la clave.

Escriba la siguiente consulta en SQL: Genere cada par (ciudad, cid) de tal manera que todos los estudiantes nacidos en la ciudad tomen el cid del curso. No use la agregación de SQL (conteo, suma, promedio, mínimo, máximo) ya que nuestro DBMS no lo admite. (Si estaba interesado, ¡podemos continuar la discusión para la respuesta en los comentarios!)

En realidad, ser capaz de escribir cualquier tipo de consulta complicada requiere una comprensión más profunda de la lógica matemática (ya que las consultas son todos predicados lógicos) y el cálculo relacional.

En segundo lugar, otra expectativa de alguien que afirma saber que el SQL avanzado es poder escribir una consulta de la manera más eficiente, siempre que haya varias opciones para escribir la consulta para una sola declaración de recuperación de datos.

Por ejemplo, usar GROUP BY y HAVING en lugar de escribir una consulta anidada parece ser más avanzado. Sin embargo, hoy en día con optimizadores de consultas realmente buenos en la mayoría de las bases de datos comerciales y de código abierto, es realmente difícil saber si el primero es realmente más eficiente, pero al menos se ve mejor.

Para dominar este artículo, propongo leer el libro de Sistemas de administración de bases de datos de Raghu Ramakrishnan y Johannes Gehrke, o tomar cursos en línea invaluables disponibles en MOOC, como Introducción a las bases de datos en Coursera. Entonces, realmente debería apegarse a su base de datos de destino y saber más sobre sus aspectos internos y descubrir las formas más eficientes de escribir sus consultas, y la mejor fuente de esta información es la documentación de su base de datos.

Soy una de esas personas que aprenden haciendo y utilizan Google, especialmente como sitios como StackOverflow. StackOverflow es genial cuando estás atascado en algo. Cuando voy aprendiendo una nueva habilidad, trato de prestar mucha atención a los detalles mientras construyo algo. Busque todo lo que está a punto de usar para saber todas las opciones disponibles; nunca tome un ejemplo como es. Por ejemplo, si está creando un procedimiento almacenado de TSQL (SP), busque el manejo de errores y cuáles son las diferentes opciones para recopilar información de errores en un procedimiento almacenado; entonces hacerlo. Esto te enseñará mucho sobre los SP en general. Conviértete en un experto en el manejo de errores SP; qué información está disponible para transmitir, etc. Luego busque ejemplos de cómo diferentes personas estructuran el código SP para manejar los errores; Elige un estilo que creas que es mejor. La mayoría de las tiendas no tienen ningún tipo de estándares para estructurar el manejo de errores en los SP. Debes encontrar varios ejemplos de manejo de errores. Resulta que la mayoría de los programadores de SQL escriben SP que no pasan la información de error, que en realidad estaría disponible para una aplicación .NET con una excepción SqlException. Le llevará más tiempo escribir esos primeros SP, pero los dividendos más adelante serán enormes.

Otro ejemplo de esta técnica de aprendizaje sería a medida que aprende a escribir consultas en varias tablas, preste mucha atención al “Plan” generado para su estado de cuenta y cómo ese plan cambia con la arquitectura de indexación en las tablas involucradas.

Tal vez no sea necesario todos los detalles para lo que va a hacer, pero, sin experiencia, sabrá mucho más que la mayoría de los programadores de SQL que, lamentablemente, trabajan en un nivel bastante rudimentario. Tú, sin embargo, obtendrás una comprensión más profunda en el camino para convertirte en un gurú.

Puede encontrar una gran cantidad de recursos de tutoriales en línea que desarrollan habilidades de SQL, pero también recomiendo verificar algunos buenos casos de uso en los que el SQL es muy importante para la empresa, como algunos análisis de datos. Junto con el siguiente recurso de verificación, que le dará libertad para probar sus habilidades sin configurar todos los servicios relacionados con SQL por su cuenta.

SQL Fiddle | Una herramienta para probar y compartir fácilmente los problemas de la base de datos y sus soluciones en línea.

Coursera
SQLZOO
SQL | Lenguaje de consulta de estructura | Comandos | Los tipos

Permite a los usuarios acceder a datos en sistemas de gestión de bases de datos relacionales.

Permite a los usuarios describir los datos. Cuando está ejecutando un comando SQL para cualquier RDBMS, el sistema determina la mejor manera de llevar a cabo su solicitud y el motor SQL determina cómo interpretar la tarea. preguntas de la entrevista sql | Top & Most Asked | Intellipaat

Hay varios componentes incluidos en el proceso. Estos componentes son Query Dispatcher, Optimization Engines, Classic Query Engine y SQL Query Engine, etc. El motor de consulta clásico maneja todas las consultas que no son de SQL, pero el motor de consulta de SQL no maneja los archivos lógicos.

Permite a los usuarios definir los datos en la base de datos y manipular esos datos.

Permite incrustar en otros lenguajes utilizando módulos SQL, bibliotecas y precompiladores.

Permite a los usuarios crear y eliminar bases de datos y tablas.

Permite a los usuarios crear vistas, procedimientos almacenados, funciones en una base de datos.

Permite a los usuarios establecer permisos en tablas, procedimientos y vistas

Para habilidades avanzadas, necesita trabajar en un entorno donde exista la necesidad de tareas avanzadas relacionadas con SQL.

Todos los cursos en línea te enseñarán lo básico. Para llegar a un nivel superior, debe ensuciarse las manos con el código, idealmente con conjuntos de datos reales (en producción).

Creé un tutorial que enseña SQL de una manera interactiva:

http://www.sqlteaching.com/

Las “habilidades avanzadas” y las “fuentes en línea” no tienen sentido juntas. Para lo básico , la mayoría de los tutoriales en línea lo harán, comenzando con W3School
s ‘SQL Tutorial, pero para habilidades avanzadas , lo que realmente necesita es una experiencia fría. Entrar en el campo y afrontar situaciones de la vida real.

Hay muchas diferencias entre las implementaciones de SQL y tendrá que aprender las peculiaridades de su RDBMS particular para cualquier cosa que yo considere “avanzada”. Leer el manual de cualquier sistema de base de datos que quiera dominar es probablemente un buen comienzo.