optimize_and_compare_chain
<, <=, >, >=, = y combinaciones de ellos. Por ejemplo, (a < b) AND (b < c) AND (c < 5) sería (a < b) AND (b < c) AND (c < 5) AND indexHint(b < 5) AND indexHint(a < 5). Las comparaciones derivadas se incluyen en indexHint: participan en el análisis de índices (clave primaria, clave de partición, índices de omisión) y podan el conjunto de lectura, pero no tienen coste por fila ni afectan a PREWHERE. Una comparación derivada mediante expresiones de tablas distintas sigue siendo ejecutable ((t1.a < t2.b) AND (t2.b < 5) deriva la condición simple t1.a < 5): es la única condición que puede insertarse por debajo del join, donde filtra una entrada del join a la que la cadena original no puede llegar. Las comparaciones derivadas que contradicen una condición existente también se añaden como condiciones simples, de modo que el AND se reduce a false.
optimize_and_compare_chain_max_hash_work
optimize_and_compare_chain durante el análisis de consultas, medido por la cantidad de nodos del árbol de consulta para los que getTreeHash calcula el hash (el costo dominante de esta optimización). Una vez que una consulta ha calculado el hash de más nodos que este límite mientras aplica la optimización, deja de aplicarla durante el resto de la consulta. Esto limita el tiempo de análisis de consultas con muchísimas cadenas AND de comparaciones o cadenas AND muy grandes, en las que, de otro modo, la optimización podría llegar a dominar el análisis sin simplificar nada. Detenerse antes siempre es seguro: solo se renuncia a una optimización y nunca se alteran los resultados. Establézcalo en 0 para desactivar el presupuesto (ilimitado).