Conferencia de optimización de SQL (7) -uso razonable de variables

Columna SQL

Resumen de los conceptos básicos de SQL

Resumen de conocimientos avanzados de SQL

Los amigos novatos rara vez usan variables. De hecho, las variables se usan a menudo en el proceso de consulta de datos y pueden mejorar efectivamente la velocidad de la consulta.

1
¿Qué es una variable?

Una variable es en realidad un parámetro de variable que definimos, y su sintaxis básica es la siguiente:

-Definir una variable llamada @I y especificar su tipo como un entero

DECLARAR @I VARCHAR (20)

- Asignar un valor a la variable @I

SET @ I = 'desarrollo de base de datos SQL'

--Obtener el valor de @I

SELECCIONAR @I

Resultado: desarrollo de la base de datos SQL

  • Entre ellos, la parte DECLARE @ es una redacción fija, @I es el nombre de una variable y la variable debe tener un tipo definido, que generalmente se define como un tipo de carácter, un tipo de entero, un tipo de tiempo, etc. .

  • La parte de asignación SET también se escribe de forma fija, es decir, para asignar un valor a la variable @I, y el valor a la derecha de = es el contenido de la asignación.

  • Una vez definida la variable, se puede incluir en la instrucción de la consulta. Cada vez que solo necesite modificar la parte de la asignación, la instrucción de la consulta consultará el resultado correspondiente según el contenido de la tarea.

2
Por qué usar variables

Después de usar variables, si la misma instrucción de consulta solo tiene diferentes asignaciones, el primer plan de ejecución se puede reutilizar para lograr el efecto de un análisis y una reutilización múltiple, reducir el análisis del plan de ejecución aumentará la velocidad de la consulta en consecuencia. Veamos el siguiente ejemplo:

SELECCIONAR * DE T1 DONDE ORDER_ID = '112';

SELECCIONAR * DE T1 DONDE ORDER_ID = '113';

Si estas dos declaraciones de consulta se ejecutan por separado, el optimizador de consultas considera que es una declaración SQL diferente y debe analizarse dos veces.

Usamos variables para modificarlo

DECLARAR @ORDER_ID VARCHAR (20)

SET @ ORDER_ID = '112'

SELECCIONAR * DE T1 DONDE ORDER_ID = @ ORDER_ID;

Después de la ejecución, solo necesita modificar el valor de @ORDER_ID a '113' y puede reutilizar el plan de ejecución anterior.

Dado que la declaración anterior es relativamente simple, es posible que el efecto no sea visible, pero si encuentra una declaración de consulta más compleja, la consulta variable a menudo puede tener un efecto muy bueno.

3 ¿
Cuándo debería / no debería utilizar variables?

  • Las variables se pueden usar en consultas comunes en línea, y las variables se pueden pasar a la base de datos como parámetros, y la consulta se puede implementar una vez y el plan de ejecución se puede reutilizar.

  • Si consulta una declaración sola durante mucho tiempo, como más de media hora, este uso de variables no tiene ningún efecto.

4 Hay dos lados de las
variables que miran
a escondidas . Las variables pueden mejorar la eficiencia de las consultas para consultas comunes. Pero hay excepciones, como cuando el campo en la condición DONDE es "campo inclinado".

"Campo inclinado" significa que la mayoría de los valores en esta columna son los mismos. Por ejemplo, en un formulario de censo, más del 90% de la columna "étnica" es de nacionalidad Han. Entonces, si una declaración SQL quiere consultar la población de la nacionalidad Han de 30 años, la columna "nacionalidad" debe colocarse en la condición WHERE. En este momento, si usa bind variables @NATION, habrá un gran problema.

Si el primer valor pasado por @NATION es "Nacionalidad Han", entonces todo el plan de ejecución inevitablemente elegirá un escaneo de tabla.

DECLARAR @NATION VARCHAR (50)

SET @ NATION = 'Nacionalidad Han'

SELECCIONE * DE Personas DONDE EDAD = 30 Y NACION = @ NACION;

Cuando el segundo valor se pasa como "Ella", la proporción de "Ella" en la tabla puede ser sólo uno en diez mil en circunstancias normales, y se debe utilizar la búsqueda de índice.

DECLARAR @NATION VARCHAR (50)

SET @ NATION = 'Ella Nacionalidad'

SELECCIONE * DE Personas DONDE EDAD = 30 Y NACION = @ NACION;

Dado que el plan de ejecución de la "nacionalidad Han" analizado por primera vez se reutiliza, el método de escaneo de tablas también se utilizará por segunda vez. Este problema es el famoso "vistazo de variables", y se recomienda no utilizar variables de vinculación para "campos sesgados".

La lección de hoy terminará aquí. Si no entiende nada sobre las variables, puede dejar un mensaje a continuación y le responderé una por una.

Supongo que te gusta

Origin blog.51cto.com/15057820/2656475
Recomendado
Clasificación