Executando 10.8.8-MariaDB-log
Tenho uma consulta muito complexa para um site de comparação.
Essencialmente
SELECT <columns> FROM <tables>
JOIN <derived table 1 for first comparison>
JOIN <derived table 2 for first comparison>
JOIN <derived table 1 for second comparison>
JOIN <derived table 2 for second comparison>
Funciona em <0,1s
Se eu mudar para
SELECT <columns> FROM <tables>
JOIN <derived table 1 for first comparison>
JOIN <derived table 2 for first comparison>
JOIN <derived table 1 for second comparison>
JOIN <derived table 2 for second comparison>
JOIN <derived table 1 for third comparison>
JOIN <derived table 2 for third comparison>
Demora mais de 10 segundos
Os índices são sólidos e o sql para criar as tabelas derivadas é o mesmo para cada comparação, exceto um valor de parâmetro de ID. Tudo o que muda é o número deles.
Eu suspeito que há algum buffer/cache que precisa ser aumentado um pouco? 🤷♂️
Sim , eu poderia reescrever a página/sql inteiramente para fazer isso por meio de um mecanismo muito diferente, mas se eu puder consertar isso com uma simples alteração de configuração, dados os recursos disponíveis na máquina, prefiro fazer isso. O tempo é curto.
Compreendo que isso possa ser um problema x/y, mas espero que haja um fruto fácil de alcançar que os mais experientes aqui sejam capazes de identificar imediatamente.
FWIW - filmando no escuro - tentei quadruplicar o tamanho desses três e não fez diferença:
join_buffer_size = 32M (to 128M)
sort_buffer_size = 4M (to 16M)
read_rnd_buffer_size = 4M (to 16M)
Obrigado