Estos ajustes están disponibles en system.settings y se generan automáticamente a partir del código fuente.
optimize_limit_by_function_keys
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 26.6 | 1 | Nueva configuración que elimina las claves de LIMIT BY que son funciones de otras claves de LIMIT BY. |
Elimina las funciones de otras claves en la sección LIMIT BY.
Ejemplo: LIMIT 5 BY x, f(x) se convierte en LIMIT 5 BY x.
optimize_limit_by_in_order
Historial de versiones
| Versión | Valor predeterminado | Comentario |
|---|---|---|
| 26.6 | 1 | Nueva configuración para optimizar las consultas `LIMIT BY` cuando las columnas `BY` son un prefijo de la clave de ordenación de la tabla. |
Optimiza las consultas SELECT ... LIMIT N BY <cols> cuando <cols> (en cualquier orden) forman un prefijo de la clave de ordenación de la tabla, o pasan a formarlo después de que WHERE col = const fija las columnas iniciales. Cuando esta opción está habilitada, la lectura de origen lee los datos en el orden de la clave primaria, de modo que las filas con valores iguales en las columnas BY llegan contiguas entre sí dentro de cada flujo. Cuando los datos llegan en un único flujo ordenado, LIMIT BY los filtra en modo streaming con memoria O(1), en lugar de construir una tabla hash con cada combinación distinta de columnas BY encontrada. Cuando los datos ordenados llegan en varios flujos y los mismos valores de BY pueden aparecer en más de uno de ellos, primero cada flujo se prefiltra en modo streaming hasta un máximo de LIMIT + OFFSET filas por grupo; después, los flujos se combinan y un LIMIT BY final basado en hash elimina los duplicados de los grupos que abarcan varios flujos. Ese paso final sigue manteniendo una entrada por cada combinación distinta de columnas BY, pero solo procesa las filas prefiltradas.