SQL_CALC_FOUND_ROWS
solo es útil si está utilizando un LIMIT
cláusula, pero todavía quiero saber cuántas filas se habrían encontrado sin el LIMIT
.
Piensa en cómo funciona esto:
SELECT SQL_CALC_FOUND_ROWS * FROM Users;
Está obligando a la base de datos a recuperar/analizar TODOS los datos de la tabla, y luego los tira. Incluso si no va a recuperar ninguna de las filas, el servidor de la base de datos comenzará a extraer datos reales del disco suponiendo que deseará esos datos.
En términos humanos, compraste todo el contenido de la súper tienda de comestibles, pero tiraste todo excepto el paquete de chicles del puesto junto al cajero.
Considerando que, haciendo:
SELECT count(*) FROM users;
permite que el motor de base de datos sepa que, si bien desea saber cuántas filas hay, no le importan menos los datos reales. En la mayoría de los DBMS inteligentes, el motor puede recuperar este recuento de los metadatos de la tabla, o una simple ejecución a través del índice de clave principal de la tabla, sin siquiera tocar los datos de la fila en el disco.