El principio --sql serie MySQL

contar(*)

motor MyISAM el número total de ⾏ ⼀ mesas existe en el disco, por lo que sí count (*) cuando un retorno directo a este número, la eficiencia UN ALTO, pero añadió una condición no puede volver rápidamente
el motor InnoDB ⽽ problemas, realizar la cuenta (*) cuando los datos requeridos ⼀ ⾏ ⼀ ⾏ leídos desde la pantalla del motor ⾥ y el recuento acumulado a continuación.

InnoDB línea de selección de línea se calcula debido a diferentes cosas a la cantidad de libros, lectura de datos individuales para asegurar la exactitud de las cosas.
Para COUNT (*) MySQL optimizado, el índice general menos de los datos de índice de clave principal, el recuento para cada valor del índice calculado (*) es la misma, MySQL optimizador elige el recorrido más pequeño árbol de índices

Aunque la cantidad de tabla MyISAM (*) pronto, pero no son compatibles con la transacción;
Mostrar comando de estado aunque la mesa para volver pronto, pero no es exacto;
InnoDB conteo directo (*) atravesará toda la tabla, aunque precisa, pero puede causar problemas de rendimiento .

Para el número total de escenas consultados frecuentemente, puede grabar su propia tabla Total
tampón cuenta: Número total de consultas Redis inicia su posterior disminución del número de mantenimiento, pero la disminución no se inserta entre la base de datos y la cantidad de datos Redis operación atómica y hacer que el número real de los datos difieren, mientras no es compatible con transacción distribuida.
recuento de base de datos: El número total de cada tabla almacenada en la base de datos, y utilizando el número real de las cosas para lograr la consistencia de los datos

Por lo tanto todo debe primero averiguar count () semántica. contar () es una función ⼀ polimerizado, conjuntos de resultados devueltos ⼀ ⾏ ⾏ juzga si el parámetro de la función recuento no es NULL, el valor acumulado se incrementa en uno, o sin ella. Por último, el valor de retorno acumulado.
(. 1) Por lo tanto, count (*), count (clave primaria id) y contar están representados por el número total de ⾏ rendimientos establecer criterios vacío lleno; ⽽ count (campo), y luego volver a la plena condición de datos vacío ⾏ ⾥ ⾯ parámetros "campo" no es el número total de NULL.

⾄ tiempo para analizar la diferencia de rendimiento, para que pueda recordar para conseguir acostumbrado principio:
¿Qué capa del servidor 1. Dar cualquier cosa;
2. Sólo InnoDB al valor necesario;
3. El optimizador optimizar la única cuenta (*) de semántica "traen ⾏" otro "significativo ⽽ fácil ⻅" optimización no hace.

count (clave primaria id) , el motor InnoDB atravesará toda la tabla, cada valor de los ajustes de ID ⼀ cámara que se toman fuera, regresó a la capa de servidor. Obtener el id de la capa de servidor, el juicio es poco probable que sea vacía, pulse ⾏ acumulación.
COUNT (1) , atraviesan todo el motor InnoDB mesa, pero no el valor. Para cada capa de servidor ⼀ ⾏ vuelto put ⼀ digital "1" en, la determinación es imposible vaciar, por ⾏ acumulación.
Basta con mirar a la diferencia entre estos dos Utilizando el método, puede salir por el contrario, count (1) Realizar ⽐ tiene que contar (primaria ID de la llave) rápido. Debido a que la identificación de la devolución implica ⾏ de datos analizados, y el valor de la operación de copia ⻉ campo del motor.
contar (Field) :
1. Si el "campo" se define como no nulo, ⼀ ⾏ ⾏ lectura a partir de la grabación ⾥ ⾯ este campo, no puede ser nulo determinada, acumulada por ⾏;
2. Si se define el "campo" para permitir es nulo, a continuación, realizar a tiempo, puede ser nula para juzgar, sino también para determinar el valor tomado de nuevo para grabar el siguiente, no sólo se acumulan nula.

Ese es el principio del artículo primero trama antes de la pantalla para, capa de servidor a qué campo, vuelve InnoDB qué campo.
Pero la cuenta (*) son la excepción, no todo el campo será llevado a cabo, ⽽ está diseñado ⻔ optimizado, no el valor. count (*) ciertamente no es nula, de acuerdo con ⾏ acumulan.

Identificación de clave principal duda viene muy bien ah vacío, por qué no, de acuerdo con el conteo (*) bajo optimizado para manejar, porque muchos de optimización similares, count (*) ha sido optimizado, otros temporalmente optimización

La conclusión es: la eficiencia ordenada, a continuación, el recuento (campo) <count (clave primaria id) <count (1) ≈count (*), así que sugiero que trate de usar la cuenta (*).
Autocomprobación Conclusión: selct (1)> seleccionar ( *)> seleccione ( claves primarias de auto-incremento)> seleccionar (clave numérica de negocios principal)> seleccione (Business clave principal char)> seleccionar (índice único Normal)

ordenado por

tipo de campo completo
de MySQL dará a cada subproceso se asigna bloque de memoria ⼀ utilizar para ordenar, llamado sort_buffer.

Seleccionar la ciudad, nombre, edad a partir de t en la ciudad = '杭州' ordenado por nombre de límite de 1000;

1. Inicializar sort_buffer, se determina para poner el nombre START, ciudad, edad tres campos;
2. Encuentre el primer fotograma de una ciudad vacía de la ciudad índice completo = condiciones 'Hangzhou' el ID de clave primaria, es decir, en la figura ID_X;.
3. clave primaria Identificación del ⾏ eliminar todo el índice, tomando el nombre, ciudad, valores de edad de tres campos, el sort_buffer START almacenado;
4. retire la clave principal de la ID de registro ⼀ ciudad desde el índice;
5. el paso se repite hasta que el valor de la ciudad es de menos de 3,4 subexpuestas consulta es para todavía, la clave primaria correspondiente es id en la figura ID_Y;
6. los datos hacen una rápida sort_buffer el nombre de campo ordenado;
7. los resultados ordenados se devuelven desde el antiguo al cliente 1000 ⾏.

"Ordenar por nombre" esta acción puede ser completado en la memoria, puede ser necesario Uso de tipo externo, dependiendo de la memoria deseada y parámetros de clasificación sort_buffer_size.
sort_buffer_size, MySQL está abierto para el tipo de memoria (sort_buffer) se ampliará ⼩. Si la cantidad de datos que debe clasificarse en ⼩ sort_buffer_size, la clasificación se completa en la memoria. Sin embargo, si la cantidad de datos ordenados zoom también, de memoria no encaja, que no debe Usando adversamente disco temporal clasificación de piezas de archivos auxiliares.

rowid tipo
⾥ pantallas aparecen en ⾯ este proceso algoritmo, sólo la tabla de datos original leído ⼀ veces, el resto de las operaciones se encuentran en sort_buffer y los archivos temporales en llevar a cabo a las mentiras de problemas en el campo de la memoria a largo tiempo mantiene una pequeña cantidad de datos, se divide en tantos archivos temporales, ineficiente

= 16 max_length_for_sort_data el conjunto;
max_length_for_sort_data, es ⼀ parámetros ⻓ grados MySQL secundaria ⻔ utilizar para controlar el orden de los datos ⾏. Lo que significa que, si una sola configuración de la cámara que ⻓ supera este valor, MySQL se considera una única ⾏ has también quieren cambiar ⼀ algoritmos

ciudad, nombre, edad definir el total de ⻓ de estos tres campos fue de 36, lo max_length_for_sort_data ajustado a 16, consiga un nuevo algoritmo:
Los nuevos clics algoritmo en su lugar sort_buffer el campo, sólo para ser una especie de columna (es decir, el campo de nombre) y el primario ID de la llave .
Pero esta vez, porque los resultados de la clasificación y el valor de campo de edad menor de la ciudad, y no se puede volver directamente, todo el proceso se convierte en un borrador SÍ submenú se muestra a continuación:
1. Inicializar sort_buffer, está decidido a poner START dos campos, es decir, Identificación y nombre;
2. Encuentre el primer fotograma de una ciudad vacía ciudad índice completo = primarios condiciones 'Hangzhou' clave de identificación, es decir, en la figura ID_X;
3. Identificación del al índice de clave principal quitar el entero ⾏, tomar el nombre, estos dos campos de ID , el depósito START sort_buffer;
4. eliminar un registro del índice ⼀ ciudad primaria ID de clave;
3,4 hasta insatisfacción ciudad vacía = 'Hangzhou' para condiciones fijas, es decir, en la figura ID_Y pasos 5. repetición;
6. sort_buffer datos de clasificación de acuerdo con el nombre del campo en ⾏;
7. resultados de la clasificación de desplazamiento, tomada antes de ⾏ 1000, y llevado de vuelta a la tabla original de la ciudad, el nombre y la edad de tres campos devueltos al cliente de acuerdo con el valor de ID.
Eso es: encontrar y campo de ordenación en condiciones donde id por sort_buffer, el id ordenado de forma que la tabla original de resultados de la extracción devueltos.

La clasificación es operación funcionamiento de la resistencia por el índice de articulación campo de clasificación y hecho de campos de filtro, el orden natural, o usar un índice de cobertura

 

pequeña sorpresa 

 1, sumar, descarga Unión alta comisión, para recibir cupones principales plataforma oculta, cada provincia de compra 10 8 no lo hacen fragante, registrados bajo el código de Fanger Wei por el usuario puede añadir micro carta liershuang123 (micro señal) recibirá el valor de miles de Yuan vídeo de aprendizaje masivo.

Nos dedicar parte de la información de la tabla:

Software de libros electrónicos: link: https: //pan.baidu.com/s/1_cUtPtZZbtYTF7C_jwtxwQ código de extracción: 8ayn
arquitecto dos: enlace: https: Código de extracción //pan.baidu.com/s/1yMhDFVeGpTO8KTuRRL4ZsA: ui5v
etapa arquitecto cursos: link: https: //pan.baidu.com/s/16xf1qVhoxQJVT_jL73gc3A código de extracción: 2k6j

          

 2, he pagado dinero comprando extremo frontal de un andamio separación de fuentes, es 10 venta yuanes, además de micro-canal liershuang123 fuente de adquisición

 

 

Supongo que te gusta

Origin www.cnblogs.com/leskang/p/12610630.html
Recomendado
Clasificación