La diferencia entre contar(*) y contar(1)

En el desarrollo real o en el proceso de consulta de tablas de datos, la eficiencia de ejecución de una gran cantidad de datos con un recuento de columnas de clave principal es:

recuento (columna de clave principal) > recuento (1) > recuento (columna de clave no principal) > recuento (*)

Nota: count (nombre de la columna) solo incluye la columna del nombre de la columna. Al contar los resultados, se ignorará el recuento del valor de la columna que está vacío, es decir, cuando un determinado valor de campo es NULL, no se contará . .

1. En cuanto al efecto de ejecución:

count(1), de hecho, cuenta cuántas filas elegibles hay.

1 no significa el primer campo, sino un valor fijo.

De hecho, se puede pensar que existe tal campo en la tabla.Este campo es un valor fijo 1, y count(1) es para calcular cuántos 1 hay en total.

count(*), cuando se ejecuta, el asterisco se traducirá al nombre específico del campo, y el efecto es el mismo, pero hay una acción de traducción adicional, que es un poco menos eficiente que el método de valor fijo.

2. En términos de eficiencia de ejecución:

Habrá algunas diferencias entre ellos según las diferentes situaciones, y MySQL optimizará count().

(1) Si solo hay una columna en la tabla, contar() tiene la mejor eficiencia.

(2) Si la tabla tiene varias columnas y hay una clave principal, el recuento (nombre de la columna de la clave principal) tiene la mejor eficiencia, seguido de: recuento (1) > recuento (*).

(3) Si la tabla tiene varias columnas y no hay una clave principal, contar (1) es más eficiente que contar (*)

3. En términos de resultados de ejecución:

No hay diferencia entre (1), contar (1) y contar ( ), porque contar ( ) contar (1) no filtrará

(2), (excluir) valores nulos, pero el recuento (nombre de la columna) es diferente, porque el recuento (nombre de la columna) filtrará los valores nulos.

Cuarto, la diferencia entre contar (*) y contar (1) y contar (nombre de columna)  

(1) En términos de efecto de ejecución:  

count (*) incluye todas las columnas, lo que equivale al número de filas. Al contar los resultados, no ignorará el valor de columna NULL  

count(1) incluye ignorar todas las columnas, usando 1 para representar la línea de código, y no ignorará el valor NULL de la columna al contar los resultados  

El conteo (nombre de la columna) solo incluye la columna del nombre de la columna. Al contar los resultados, el conteo del valor de la columna que está vacío (el vacío aquí no es solo una cadena vacía o 0, sino que significa nulo), es decir, un valor de campo es Cuando NULL, no cuenta.

(2) En términos de eficiencia de ejecución:  

El nombre de la columna es la clave principal, y la cuenta (nombre de la columna) será más rápida que la cuenta (1)  

El nombre de la columna no es la clave principal, la cuenta (1) será más rápida que la cuenta (nombre de la columna)  

count(1) funciona mejor que count(*) si la tabla tiene varias columnas y no tiene clave principal  

Si hay una clave principal, la eficiencia de ejecución de la cuenta seleccionada (clave principal) es óptima  

Si la tabla tiene solo un campo, seleccionar recuento (*) es óptimo.

Supongo que te gusta

Origin blog.csdn.net/ChengXuYuan_Miao/article/details/130367907
Recomendado
Clasificación