Sobes.tech
Middle+

¿Cuándo la exploración completa del conjunto de datos es más eficiente que el acceso por índice?

sobes.tech AI

Respuesta de la IA

Cuando el porcentaje de registros que se deben procesar es lo suficientemente alto (por ejemplo, más del 10-20%), para que los costos de buscar en el índice y leer bloques de datos individuales superen las ventajas.

Otros casos:

  • Falta de un índice adecuado: Si no hay un índice que cubra los campos de filtrado o que proporcione acceso a los datos más rápido que un escaneo completo.
  • Distribución desigual de datos (sesgo): Si el campo indexado tiene baja cardinalidad y la mayor parte de los datos se concentra en unos pocos valores, el escaneo puede ser más rápido que recorrer muchas hojas del índice con valores iguales.
  • Conjunto de datos pequeño: Para tablas pequeñas, los costos de mantener y usar un índice pueden ser mayores que la ventaja de usarlo.
  • Lectura secuencial: Un escaneo completo generalmente implica una lectura secuencial desde el disco, lo cual puede ser más rápido que una lectura aleatoria al acceder mediante un índice, especialmente en HDD.
  • Gran volumen de datos en una fila: Si cada fila contiene una gran cantidad de datos, leer todo el conjunto de datos de una vez puede ser más eficiente que acceder varias veces al disco para obtener filas individuales mediante un índice.

Ejemplo en el que un escaneo completo puede ser más eficiente:

// Selección simple * en una tabla con pocas filas.
SELECT *
FROM small_table;

// Consulta con filtro que afecta a la mayoría de las filas
SELECT *
FROM large_table
WHERE status = 'processed'; // Si la mayoría de las filas tienen estado 'processed'