optimize_and_compare_chain
<, <=, >, >=, = e combinações entre eles. Por exemplo, (a < b) AND (b < c) AND (c < 5) se tornaria (a < b) AND (b < c) AND (c < 5) AND indexHint(b < 5) AND indexHint(a < 5). As comparações derivadas são encapsuladas em indexHint: elas participam da análise de índices (chave primária, chave de partição, índices de salto) e reduzem o conjunto de leitura, mas não têm custo por linha e não afetam PREWHERE. Uma comparação derivada por meio de expressões de tabelas diferentes permanece executável ((t1.a < t2.b) AND (t2.b < 5) deriva a condição simples t1.a < 5): é a única condição que pode ser aplicada abaixo do join, onde filtra uma entrada do join que a cadeia original não consegue alcançar. Comparações derivadas que contradizem uma condição existente também são adicionadas como condições simples, de modo que o AND é reduzido a false.
optimize_and_compare_chain_max_hash_work
optimize_and_compare_chain durante a análise da consulta, medido pelo número de nós da árvore de consulta cujo hash é calculado por getTreeHash (o custo dominante dessa otimização). Quando uma consulta tiver calculado o hash de mais nós do que esse valor ao aplicar a otimização, ela deixa de aplicá-la no restante da consulta. Isso limita o tempo de análise de consultas com cadeias AND de comparações muito numerosas ou muito grandes, nas quais a otimização poderia, de outra forma, dominar a análise sem simplificar nada. Interromper antes é sempre seguro: isso apenas abre mão de uma otimização e nunca altera os resultados. Defina como 0 para desabilitar o orçamento (ilimitado).