Cómo escribir mejores consultas SQL: la guía definitiva - Parte 1
En segundo lugar, debemos comenzar por comprender cómo se procesan y ejecutan las declaraciones de consulta SQL, para comprender mejor cómo escribir datos de alta calidad. -Importancia de las consultas de calidad. Específicamente, debe comprender cómo se analizan, reescriben, optimizan y, en última instancia, evalúan las consultas;
Después de dominar los puntos anteriores, no solo necesita revisar las consultas que usan los principiantes al escribir declaraciones de consulta. Los modelos inversos también requieren conocimiento sobre alternativas y soluciones a posibles errores. También debería aprender más sobre cómo funcionan las consultas de programas basados en colecciones.
También debe observar el modelo inverso desde una perspectiva de rendimiento. Además de mejorar manualmente el método de consulta SQL, también debe analizar su consulta de una manera más organizada y profunda para que sea más fácil. Se puede completar utilizando otras herramientas. La consulta completa funciona.
Antes de ejecutar la consulta, también se requiere una comprensión más profunda de la complejidad temporal de ejecutar el plan de consulta.
Finalmente, aprenda cómo optimizar aún más su consulta.
¿Por qué aprender SQL? Si busca trabajo en la industria del análisis de minería de datos, ya sea que esté solicitando trabajos de análisis de datos, trabajos de motores de datos, trabajos de análisis de minería de datos u otros trabajos, SQL es una de las habilidades más demandadas. Esto fue confirmado por el 70% de los encuestados en el Informe de salarios de ciencia de datos de 2016 de O'Reilly, quienes informaron la necesidad de utilizar SQL en un entorno profesional. Además, SQL superó con creces a lenguajes de programación como R (57) y Python (54) en esta encuesta. Por lo tanto, SQL es una habilidad imprescindible en el campo de la minería y el análisis de datos.
Analicemos las razones por las que SQL ha perdurado desde su desarrollo a principios de los años 1970:
1. Las empresas básicamente almacenan los datos en sistemas de gestión de bases de datos relacionales (RDBMS) o Relational Data Stream. Sistema de gestión (RDSMS), por lo tanto, debe utilizar SQL para acceder a estos datos. SQL es un lenguaje de datos de propósito general que se puede utilizar para interactuar con casi cualquier otra base de datos, ¡e incluso puedes crear la tuya propia localmente!
En segundo lugar, sólo hay unas pocas implementaciones de SQL que no siguen el estándar y son incompatibles entre proveedores. Por lo tanto, comprender los estándares SQL es imprescindible para afianzarse en la industria del análisis de minería de datos.
En tercer lugar, y lo más importante, SQL también está siendo adoptado por nuevas tecnologías como Hive o Spark SQL. Hive es una interfaz de lenguaje de consulta similar a SQL para consultar y administrar grandes conjuntos de datos. Spark SQL se puede utilizar para ejecutar consultas SQL.
En resumen, estas son las razones por las que deberías aprender este lenguaje de consulta:
SQL es fácil de aprender, incluso para principiantes. La curva de aprendizaje es suave y escribir consultas SQ casi no lleva tiempo.
SQL sigue el principio de "aprender una vez y utilizar en cualquier lugar", por lo que tomarse el tiempo para aprender SQL es rentable.
SQL es una gran adición a un lenguaje de programación; en algunos casos, escribir consultas puede ser incluso más ventajoso que escribir código.
...
Procesamiento SQL y ejecución de consultas Para mejorar el rendimiento de las consultas SQL, primero debe comprender qué sucede internamente cuando ejecuta una consulta.
Esto es lo que sucede durante la ejecución de la consulta:
Primero, la consulta se analiza en un "árbol de análisis" para determinar si cumple con la sintaxis y la semántica requeridas. El analizador crea una representación interna de la consulta de entrada y pasa esta salida al motor de reescritura.
El trabajo del optimizador es encontrar la mejor ejecución o plan de consulta para una consulta determinada. Un plan de ejecución define exactamente qué algoritmo utilizará cada operación y cómo se coordinará la ejecución de las operaciones.
Finalmente, para encontrar el mejor plan de ejecución, el optimizador enumerará todos los planes de ejecución posibles y determinará la calidad o costo de cada plan para obtener información sobre el estado actual de la base de datos, y finalmente seleccionará el mejor plan de ejecución. Debido a que los optimizadores de consultas pueden no ser perfectos, los usuarios y administradores de bases de datos a veces necesitan inspeccionar y ajustar manualmente los planes generados por el optimizador para obtener un mejor rendimiento.
Ahora ya sabes qué es un buen plan de ejecución.
Como aprendiste antes, la calidad del costo del plan juega un papel importante. Más específicamente, es fundamental evaluar factores como la cantidad de E/S de disco requerida por el plan, el uso de CPU del plan y el tiempo de respuesta general y el tiempo total de ejecución del cliente de base de datos. Este es el concepto de complejidad del tiempo. Más sobre esto más adelante.
A continuación, se ejecuta el plan de consulta seleccionado, el motor de ejecución del sistema lo evalúa y se devuelven los resultados de la consulta.
Escribir consultas SQL requiere una mayor comprensión de cómo los principios de recolección de basura (GIGO) se aplican inicialmente al procesamiento y ejecución de consultas: la persona que formula la consulta también determina el rendimiento de la consulta SQL.
Esto significa que al escribir consultas, algunas cosas se pueden procesar en paralelo. Como se introdujo al principio del artículo, hay dos criterios que se deben seguir al escribir consultas: primero, la consulta que escriba debe cumplir con ciertos criterios; segundo, también debe abordar los problemas de rendimiento que puedan surgir en la consulta.
En resumen, hay cuatro cláusulas y palabras clave que facilitan a los principiantes pensar en problemas de rendimiento:
cláusula WHERE
palabra clave INNER JOIN y LEFT JOIN
p>
Cláusula HAVING
Aunque este es un enfoque simple e ingenuo, estas son buenas pautas. Estas también son áreas en las que tiendes a cometer errores cuando empiezas a escribir, y estos errores pueden ser difíciles de detectar.
Al mismo tiempo, para mejorar el rendimiento y hacerlo más significativo, no puede sacarlo de contexto: no puede concluir arbitrariamente que las cláusulas y palabras clave anteriores son malas al considerar el rendimiento de SQL. Las cláusulas que utilizan WHERE o HAVING también pueden ser buenas declaraciones de consulta.
Utilice las siguientes secciones como guía para estos consejos y trucos, y observe más de cerca el modelado inverso y la sustitución al escribir consultas. Cómo y si necesita reescribir su consulta depende de la cantidad de datos, su base de datos y la cantidad de veces que necesita ejecutar la consulta. Todo depende de los objetivos de su consulta, ¡y es importante tener cierta comprensión de los datos de antemano!
1. Recupere solo los datos que necesita Al escribir consultas SQL, más datos no siempre es mejor. Por lo tanto, debe tener cuidado al utilizar la instrucción SELECT, la cláusula DISTINCT y el operador LIKE.
Declaración SELECT
Después de escribir la declaración de consulta, lo primero que debe hacer es verificar si la declaración SELECT es concisa. Su objetivo debe ser eliminar las columnas SELECT innecesarias. para obtener sólo los datos que coincidan con el propósito de su consulta.
Si también tiene una subconsulta correlacionada que utiliza existe, entonces debe usar constantes en la instrucción SELECT en lugar de seleccionar valores de columna reales. Esto es especialmente conveniente al inspeccionar entidades.
Recuerde que una subconsulta correlacionada es una subconsulta que utiliza valores de una consulta externa, en cuyo caso se permite NULL como "constante", ¡lo que realmente puede causar confusión!
El siguiente ejemplo ilustra el significado del uso de constantes:
SELECTdriverslicensenr, nameFROMDriversWHEREEXISTS(SELECT '1' FROMFinesWHEREfines.driverslicensenr=drivers.driverslicensenr Consejo: No es difícil de ver; usar subconsultas relacionadas no siempre es una buena idea, así que considere evitar subconsultas correlacionadas, por ejemplo, usando una reescritura de INNER JOIN:
SELECTdriverslicensenr, nameFROMdriversINNERJOINfinesONfines.Driverslicensenr=drivers.Driverslicensenr=Drivers.Driverslicensenr =Drivers. Driverslicensenr)drivers.driverslicensenr=drivers.driverslicensenr; cláusula DISTINCT
La instrucción SELECT DISTINCT se utiliza para devolver diferentes valores. DISTINCT es una cláusula y no debe usarse con tanta frecuencia como sea posible porque agregar DISTINCT a una declaración de consulta provocará un aumento en el tiempo de ejecución.
Operador LIKE
Cuando se utiliza el operador LIKE en una consulta, si el patrón comienza con o _, no se utilizará el índice. Evitará que la base de datos utilice el índice, si existe. Por supuesto, desde otra perspectiva, también se puede pensar que este tipo de consulta puede relajar las condiciones, recuperando así muchos registros que no necesariamente cumplen con el objetivo de la consulta.
Además, su conocimiento de los datos almacenados en los datos puede ayudarle a formular un patrón mediante el cual pueda filtrar todos los datos correctamente para encontrar los datos que más desea.
2. Limitar los resultados de la consulta Si no puede evitar el uso de la instrucción SELECT, considere utilizar otros métodos para limitar los resultados de la consulta. Por ejemplo, utilice la cláusula LIMIT y las conversiones de tipos de datos.
Cláusulas TOP, LIMIT y ROWNUM
Puede establecer el número máximo de filas para una consulta agregando una cláusula LIMIT o TOP a la consulta. Aquí hay un ejemplo:
SELECTTOP3*FROMDrivers Tenga en cuenta que puede especificar más PERCENT.
Por ejemplo, si desea cambiar la primera fila de la consulta SELECT TOP 50 PERCENT *, puede utilizar la siguiente cláusula:
SELECTTOP3*FROMDrivers; ir más lejos Especificar POR CIENTO.
SELECTdriverslicensenr,nameFROMDrivers
LIMIT2; Además, puede agregar una cláusula ROWNUM, correspondiente al LIMIT utilizado en la consulta:
SELECT* FROMDriversWHEREdriverslicensenr=123456ANDROWNUMlt ; =3;
Las conversiones de tipos de datos deben utilizar el tipo de datos más pequeño porque los tipos de datos más pequeños son más eficientes.
Si se requiere la conversión del tipo de datos en la consulta, aumentará el tiempo de ejecución, por lo que se debe evitar la conversión del tipo de datos tanto como sea posible.
Si no se puede evitar, los datos; La conversión de tipos debe definirse cuidadosamente.
Este artículo es el primero de esta serie de tutoriales. Compartiremos más artículos sobre "Cómo escribir mejores consultas SQL" en el futuro, así que estad atentos.
Enlace original:/2017/08/write-better-sql-queries-definitive-guide-part-1.html
Reimpreso de: GrapeCityControls
Este artículo es del blog "Blog del equipo técnico de GrapeCityControls", asegúrese de conservar esta fuente/2369428/1960762
Cómo escribir mejores consultas SQL: la guía definitiva - Parte 1
Etiqueta : Declaración de consulta sql