Las CPUs modernas son capaces de procesar instrucciones a velocidades extremadamente altas, realizando a menudo entre 4 y 8 operaciones por nanosegundo. En contraste, acceder a los datos de la memoria RAM del sistema (DRAM) es significativamente más lento, tomando entre 50 y 100 nanosegundos. Esta discrepancia significa que una CPU puede, teóricamente, ejecutar entre 400 y 800 instrucciones por cada único acceso de memoria desde la RAM. Para mitigar esto, los procesadores utilizan una jerarquía de cachés (L1, L2 y L3) que están físicamente más cerca del núcleo y son mucho más rápidas que la DRAM. Sin embargo, estas cachés son relativamente pequeñas —las cachés L1 suelen rondar los 64KB—, lo que requiere que el software se diseñe con 'cache sympathy' para asegurar que los datos accedidos con frecuencia permanezcan en estos niveles de alta velocidad.

Al realizar una agregación `GROUP BY` en un conjunto de datos grande, una implementación naïve podría utilizar una sola tabla hash grande para almacenar cada clave de grupo única. Si el número de claves únicas es elevado, la tabla hash excederá el tamaño de la caché de la CPU. Esto obliga a la CPU a realizar accesos de memoria 'fríos' a la DRAM para casi cada operación. Incluso si un monitor del sistema muestra la CPU al 100% de utilización, el procesador puede estar pasando la mayor parte de su tiempo en estado de 'stall' —esperando a que lleguen los datos desde la memoria en lugar de ejecutar instrucciones—. En una prueba utilizando un conjunto de datos de 99 millones de filas, un enfoque naïve resultó en que la CPU se detuviera por memoria durante más del 50% del tiempo, mientras que solo completaba operaciones aproximadamente el 16% del tiempo.

Para optimizar esto, los desarrolladores pueden utilizar una técnica llamada radix partitioning. Esto implica dividir los datos en un número fijo de particiones más pequeñas (por ejemplo, 4,096) basadas en un hash de la clave. Al procesar estas particiones más pequeñas una a la vez, las tablas hash correspondientes tienen muchas más probabilidades de caber completamente dentro de la caché de la CPU. Aunque este método técnicamente requiere más operaciones totales —ya que los datos deben moverse a las particiones antes de ser agregados—, la compensación es altamente beneficiosa. En la misma prueba, cambiar a radix partitioning redujo el tiempo de espera por memoria del 50.1% al 23.5% y redujo la cantidad de datos extraídos de la DRAM en un 60%, demostrando que aumentar el recuento total de instrucciones es a menudo una estrategia ganadora si esas instrucciones reemplazan las lentas esperas de memoria.