Optimización de clave primaria, índice, declaración SQL, selección de tipo de datos

Optimización de clave primaria, índice, declaración SQL, selección de tipo de datos

1. Clave principal, clave externa, clave única

Clave principal: una regla para la integridad de las entidades de la base de datos, que identifica de forma única una entidad y su valor no está vacío y es único. Por ejemplo, el número de estudiante de la tabla de estudiantes.
Clave foránea: Una regla para la integridad referencial de una base de datos, que vincula dos o más tablas. El valor debe provenir del valor del campo de referencia de la tabla de referencia, que puede estar vacío o no. Por ejemplo, el número de estudiante en la tabla de selección de cursos.
Clave única: la restricción única puede identificar de forma única una única tupla en una relación o tabla. A diferencia de la clave principal, una tabla puede tener varias claves únicas. La restricción de clave única solo puede aceptar un valor nulo para la columna; la clave externa de otra tabla también hace referencia a la restricción única. Se puede usar cuando alguien quiere imponer restricciones únicas en columnas y grupos de columnas de claves no primarias.

#查询表结构,可以看到主键、外键、唯一键(如果有的话)
desc table;

La clave en la estructura de la tabla es MUL, y el valor de la columna se puede repetir. La columna es la columna principal (la primera columna) de un índice no único o es parte de un índice único pero puede contener NULL

2. Índice

Utilice índices para acceder rápidamente a información específica en una tabla de base de datos. Por ejemplo, una consulta: seleccione * de la tabla1 donde id = 10000. Si no hay índice, debe recorrer toda la tabla hasta encontrar la fila con ID igual a 10000; luego de tener un índice (debe ser un índice establecido en la columna de ID), puede buscar en el índice, pero el índice debe ocupar espacio físico También reduce la velocidad de mantenimiento de los datos, por lo que no tantos como sea posible.
Clasificación de índice: índice ordinario, índice único, índice de clave principal, índice de varias columnas

#显示已有的索引
show INDEX FROM table1;

Índice de clave primaria: es un índice único especial que no permite valores nulos.
Índice único: el valor de la columna de índice debe ser único, pero se permiten valores nulos.

#创建唯一索引
CREATE UNIQUE INDEX frame_num_index on payment_invoices_management(frame_num);
#创建多列索引
CREATE INDEX payment_framenum_invoicevalidity on payment_invoices_management(frame_num,invoice_validity);
#删除索引
ALTER TABLE payment_invoices_management DROP INDEX payment_framenum_invoicevalidity;

Consulta de cobertura y consulta sin cobertura (frame_num es la clave principal)
consulta de cobertura:

SELECT frame_num FROM payment_invoices_management WHERE frame_num='LRH03120000000001';

Consulta no cubierta:

SELECT frame_num FROM payment_invoices_management WHERE invoice_number=666;

3. Optimización de declaraciones SQL

Escriba la menor cantidad posible de sentencias SELECT *, solo devuelva los datos requeridos, escriba cláusulas WHERE razonablemente y no escriba sentencias SQL sin WHERE. Intente hacer el menor trabajo repetitivo posible para fusionar algunas sentencias sql
b, intente evitar realizar escaneos completos de la tabla de la siguiente manera: ¡
La consulta difusa izquierda '% ...'
usa operadores desiguales! =
O se usa incorrectamente, o ambos lados deben tener índices.
En, no en, las
cláusulas Where realizan operaciones de expresión en los campos.
Para el índice compuesto creado (combinado desde el extremo izquierdo), las columnas utilizadas en las condiciones de consulta deben comenzar desde la izquierda. intervalo. De lo contrario, no es válido. La estructura del índice compuesto es similar al
índice de texto completo de la guía telefónica : cuando se establece un índice para el archivo con tesauro como directorio (el índice de texto completo del archivo es mejor que el efecto de coincidencia aproximada), puede estar en las columnas char, varchar y tipo de texto Cree un índice de texto completo, el motor MySQL 5.6 Innodb también puede realizar un índice de texto completo, sintaxis de búsqueda: COINCIDIR (nombre de columna 1, nombre de columna 2, ...) CONTRA (cadena de búsqueda [modificador de búsqueda]), si el tipo de columna es una cadena, pero en En la consulta, se asigna una constante numérica a un nombre de columna de carácter, aunque hay un índice en la columna de nombre, no se utiliza.
c. Use join en lugar de subconsulta
d, use union en lugar de crear tablas temporales manualmente

4. Selección del tipo de datos

Tipo de número
Float y selección doble (elija float tanto como sea posible) para
distinguir entre TINYINT / INT / BIGINT, se puede determinar que los campos que no usarán números negativos, se recomienda agregar definiciones sin firmar. Es
posible usar campos de tipo numérico para elegir tipos de números en lugar de tipos de
caracteres de tipo cadena
La elección de char, varchar, TEXT: No use el tipo de datos TEXT como último recurso, campos de longitud fija, se recomienda usar el tipo CHAR (complete los espacios en blanco) y use VARCHAR para campos de longitud variable (se adaptan automáticamente a la longitud, exceden la etapa), y solo configure el Duración máxima
Tipo de tiempo
Ordenar por prioridad de selección DATE (exacto al día), TIMESTAMP, DATETIME (exacto a la hora)
ENUM
Para el campo de estado, puede intentar usar ENUM para almacenarlo.
Evite usar campos NULL, es difícil consultar la optimización y ocupar espacio de índice adicional

Supongo que te gusta

Origin blog.csdn.net/Krystal_RonghuiLi/article/details/107999397
Recomendado
Clasificación