Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
El lenguaje SQL se divide en cuatro categorías: lenguaje de consulta de datos DQL, lenguaje de manipulación de datos DML, lenguaje de definición de datos DDL y lenguaje de control de datos DCL.
1. Lenguaje de consulta de datos DQL
La estructura básica del lenguaje de consulta de datos DQL es un bloque de consulta compuesto por la cláusula SELECT, la cláusula FROM y la cláusula WHERE: SELECT <tabla de nombres de campo> FROM <nombre de tabla o vista> WHERE <condiciones de consulta>
2. Lenguaje de manipulación de datos DML
Hay tres formas principales de lenguaje de manipulación de datos DML:
1) Insertar: INSERTAR
2) Actualización: ACTUALIZAR
3) Eliminar: ELIMINAR
3. Lenguaje de definición de datos DDL
El lenguaje de definición de datos DDL se utiliza para crear varios objetos en la base de datos ----- tablas, vistas, índices, sinónimos, clústeres, etc., como: CREATE TABLE / VIEW / INDEX / SYN / CLUSTER Clúster de sinónimos de índice de vista de tabla | . ¡Las operaciones DDL se envían implícitamente! No se puede revertir
4. Lenguaje de control de datos DCL
El lenguaje de control de datos DCL se utiliza para otorgar o revocar ciertos privilegios para acceder a la base de datos, controlar el tiempo y el efecto de las transacciones de manipulación de la base de datos y monitorear la base de datos. como:
1) CONCESIÓN: Autorización.
2) RETROCEDER [TRABAJO] A [PUNTO DE GUARDAR]: retrocede hasta un punto determinado. Rollback---ROLLBACK El comando rollback devuelve el estado de la base de datos al último estado enviado. Su formato es: SQL>ROLLBACK;
3) COMPROMETER [TRABAJO]: Enviar. Durante las operaciones de inserción, eliminación y modificación de la base de datos, la transacción se completa solo cuando se envía a la base de datos. Antes de que se confirme la transacción, solo la persona que opera la base de datos tiene derecho a ver lo que se ha hecho. Otros solo pueden verlo después de que se complete la confirmación final.
Comando de autorización de la base de datos:
OTORGAR<permiso> en el nombre de la tabla (o nombre de la columna) al usuario
Opción de respuesta correcta B: insertar, seleccionar: nombre de la tabla de permisos: usuario usuario: nkw
Permisos de reciclaje de puntos de conocimiento complementarios
REVOCAR <permiso> en el nombre de la tabla (o nombre de la columna) DEL usuario
Creo que todos están familiarizados con la declaración de explicación, que se utiliza como declaración para ver el plan de ejecución. explicar se utiliza a menudo en el análisis de optimización de SQL.
Vale la pena señalar aquí: explicar en realidad no ejecuta la declaración, solo muestra el plan de ejecución.
¿Qué información puedo ver?
- EXPLAIN SELECT select具体语句
- 如:
- EXPLAIN SELECT * FROM userpro
Lista | describir | Reponer |
identificación | Cada palabra clave SELECT corresponde a una identificación | |
seleccione tipo | Tipo de consulta correspondiente a la palabra clave SELECT | |
mesa | Nombre de la tabla | |
particiones | Información de partición coincidente | |
tipo | Método de acceso para una sola mesa. | |
posibles_claves | Posibles índices | |
llave | índice real utilizado | |
clave_len | La longitud del índice real utilizada | |
árbitro | Cuando se utiliza la consulta de equivalencia de la columna de índice, la información del objeto que coincide con la columna de índice para la equivalencia. | |
filas | Número estimado de registros a leer | |
filtrado | Porcentaje de registros restantes después de filtrar por criterios de búsqueda |
|
Extra | información extra |
1, identificación
Cada palabra clave SELECT corresponde a una identificación
Cuanto mayor sea el valor de identificación, mayor será la prioridad y se ejecutará primero.
Si los ID son iguales, pueden considerarse como un grupo y ejecutarse secuencialmente de arriba a abajo.
Cada número de identificación representa una consulta independiente. Cuanto menor sea el número de consultas en una declaración SQL, mejor.
2, seleccione_tipo
categoría | ilustrar |
SIMPLE | Consulta de tabla única, sin subconsulta ni consulta UNION. |
PRIMARIO | La declaración SELECT más externa de la consulta. |
SUBCONSULTA | Se utiliza una subconsulta en la cláusula WHERE. |
DERIVADO | Para las subconsultas contenidas en la cláusula FROM, MySQL la marcará como DERIVADA (derivada) y generará una tabla temporal para su conjunto de resultados para que la utilice la consulta externa. |
UNIÓN | La segunda declaración de consulta y las siguientes en una consulta UNION. |
RESULTADO DE LA UNIÓN | El conjunto de resultados de una consulta UNION. |
SUBCONSULTA DEPENDIENTE | El resultado de la subconsulta depende del valor de la consulta externa y la subconsulta se ejecuta una vez por cada fila de la consulta externa. |
UNIÓN DEPENDIENTE | La segunda declaración de consulta y las posteriores de una consulta UNION, y los resultados dependen del valor de la consulta externa. |
SUBCONSULTA NO ALMACENABLE EN CACHÉ | La subconsulta no se puede almacenar en caché y se ejecutará cada vez que se haga referencia a ella. |
3. La columna de la tabla representa el nombre de la tabla (a veces no es el nombre real de la tabla, puede ser la abreviatura).
4. particiones (opcional)
5. tipo ☆
Los tipos comunes son los siguientes
tipo | ilustrar |
sistema | Sólo hay una fila en la tabla, normalmente SELECT ... FROM DUAL Optimización de consultas. |
constante | La consulta se encuentra a través del índice una vez, con solo una fila de resultados (tabla constante). |
referencia_ecual | Utilice un índice único o una clave principal para buscar una fila de otra tabla. |
árbitro | Utilice un índice no único para buscar una o más filas de otra tabla. |
rango | Devuelve un rango de filas usando un índice. |
índice | Escanea completamente el índice para buscar filas en lugar de escanear toda la tabla. |
todo | Un escaneo completo de la tabla verifica cada fila de la tabla. |
En general, trate de evitar todo
6, clave y posibles_claves
llave:
key
El campo muestra el índice real utilizado por la consulta.Si el valor de este campo esNULL
, lo que indica que no se utiliza ningún índice. Si este campo tiene un valor, significa que MySQL usó el índice especificado para ejecutar la consulta.posibles_claves:
possible_keys
El campo muestra la lista de índices que MySQL puede usar. Estos índices son índices que se pueden considerar en las consultas, pero que en realidad no se pueden utilizar. generalmente,possible_keys
Los índices enumerados en se determinan en función de las condiciones de consulta y la estructura de la tabla.si key
Un campo tiene un nombre de índice ypossible_keys
Se enumeran varios nombres de índice, lo que indica que MySQL ha seleccionadokey
El índice en el que aparece el campo se utiliza para realizar la consulta, mientras que los otros índices se enumeran enpossible_keys
Medium dijo que también podría considerarse, pero finalmente no usarse.
si key
Los campos sonNULL
,y possible_keys
Se enumeran varios nombres de índice, lo que indica que MySQL no utiliza ningún índice al ejecutar la consulta, lo que puede resultar en un escaneo completo de la tabla u otros métodos de acceso optimizados sin índice.
7, longitud de la tecla
key_len
Es un campo que describe la longitud de la clave de índice. Indica el uso del índice y la longitud de la clave del índice cuando MySQL usa un índice específico para ejecutar consultas.
Índice de una sola columna:
INT
),pero key_len
El valor es la longitud de la columna.VARCHAR
),pero key_len
El valor de es la longitud máxima del campo.índice compuesto:
key_len
Representa la longitud total de todas las columnas del índice.índice combinado:
key_len
es la longitud total de todas las columnas del índice combinado.prefijo de índice:
key_len
Se mostrará la longitud real de la pieza índice utilizada.8, referencia
ref
Es un campo que describe las condiciones de conexión entre tablas o utiliza un índice no único para buscar. Indica qué condiciones de unión o qué índices utiliza MySQL para acceder a la tabla al ejecutar una consulta.
9 filas
rows
Es una estimación del número de filas a las que se accede o examina al ejecutar una consulta.
SELECT
Preguntar,rows
Representa el número estimado de filas que se devolverán.JOIN
) o subconsulta,rows
Puede representar el número de filas a las que se accede durante la operación de unión.rows
Puede representar el número de filas escaneadas.10, filtrado
Representa el porcentaje de filas filtradas según las condiciones WHERE y las condiciones del índice. filtrado refleja el efecto de optimización de consultas estimado por el optimizador.
cuando filtered
Cuando está cerca del 100%, significa que las condiciones de la consulta han filtrado efectivamente la mayoría de las filas que no cumplen con las condiciones, lo que suele ser un buen indicador de optimización.
Por el contrario, si filtered
Un valor bajo puede indicar que las condiciones de la consulta no son lo suficientemente precisas o que el optimizador no está utilizando eficazmente el índice para filtrar los datos.
11, Adicional
Campos de información adicional
Éstos son algunos de los más comunes Extra
Campos y sus significados:
Usando índice:
Usando donde:
Uso temporal:
Usando filesort:
Rango comprobado para cada registro (mapa de índice: ...):
range
En tipo de consulta.Escaneo completo de la clave NULL:
Distinto:
Uso del búfer de unión (bucle anidado en bloques):
Imposible DONDE:
No se utilizan tablas:
SELECT NOW()
。- CREATE TABLE s1 (
- id INT AUTO_INCREMENT,
- key1 VARCHAR(100),
- key2 INT,
- key3 VARCHAR(100),
- key_part1 VARCHAR(100),
- key_part2 VARCHAR(100),
- key_part3 VARCHAR(100),
- common_field VARCHAR(100),
- PRIMARY KEY (id),
- INDEX idx_key1 (key1),
- UNIQUE INDEX idx_key2 (key2),
- INDEX idx_key3 (key3),
- INDEX idx_key_part(key_part1, key_part2, key_part3)
- ) ENGINE=INNODB CHARSET=utf8;
- CREATE TABLE s2 (
- id INT AUTO_INCREMENT,
- key1 VARCHAR(100),
- key2 INT,
- key3 VARCHAR(100),
- key_part1 VARCHAR(100),
- key_part2 VARCHAR(100),
- key_part3 VARCHAR(100),
- common_field VARCHAR(100),
- PRIMARY KEY (id),
- INDEX idx_key1 (key1),
- UNIQUE INDEX idx_key2 (key2),
- INDEX idx_key3 (key3),
- INDEX idx_key_part(key_part1, key_part2, key_part3)
- ) ENGINE=INNODB CHARSET=utf8;
Los datos los prepara usted mismo.
Consulta de tabla única
EXPLAIN SELECT * FROM `s1`;
Unirse a la consulta
EXPLAIN SELECT * FROM `s1` INNER JOIN `s2`;
subconsulta
- EXPLAIN SELECT * FROM s1 WHERE key1 IN (SELECT key2 FROM s2 WHERE common_field
- = 'a');
- #Union 去重
- EXPLAIN SELECT * FROM `s1` UNION SELECT * FROM `s2`;
- #Union 全查
- EXPLAIN SELECT * FROM `s1` UNION ALL SELECT * FROM `s2`;
El último paso es la deduplicación, por lo que se utilizará una tabla temporal. Sin embargo, UNION ALL es una consulta para todos y no aparecerá ningún mensaje de consulta de tabla temporal.
const (busca el índice una vez, solo una fila de resultados)
EXPLAIN SELECT * FROM s1 WHERE id = 10002;
eq_ref (busca una fila de otra tabla usando un índice único o clave principal)
EXPLAIN SELECT * FROM s1 INNER JOIN s2 ON s1.id = s2.id;
ref (use un índice no único para buscar una o más filas de otra tabla)
EXPLAIN SELECT * FROM s1 WHERE key1 = 'a';
rango (devuelve un rango de filas usando el índice)
EXPLAIN SELECT * FROM s1 WHERE key1 IN ('a', 'b', 'c');
índice (escanee completamente el índice para encontrar filas)
EXPLAIN SELECT key_part2 FROM s1 WHERE key_part3 = 'a';
tiempo decimal filtrado
EXPLAIN SELECT * FROM s1 WHERE key1 > 'za' AND common_field = 'la'