Estou fazendo interface com um banco de dados MySQL com PHP Data Objects (PDO) e executando uma extensa consulta SQL. Normalmente, leva cerca de 1500 ms; Eu ainda preciso otimizá-lo. Quando executo o script PHP duas vezes com um curto intervalo, a consulta leva apenas cerca de 90 ms. A consulta é nos dois casos a mesma. Quando executo o script, com a mesma consulta, depois de algum tempo novamente, são necessários 1500 ms novamente.
Por que é que? O banco de dados é armazenado em cache automaticamente? Há algum tempo em que o banco de dados salva o cache e o exclui automaticamente?
Presumo que os resultados não possam ser armazenados em cache pelo PHP, porque isso acontece em dois threads diferentes. Eu não acho que o PHP armazenaria em cache os resultados, porque ele não pode saber se o banco de dados mudou.
Eu tenho um script em execução a cada minuto para inserir novas linhas no banco de dados. Esse também pode ser o motivo pelo qual são necessários 1500 ms novamente após algum tempo; o cache teria sido excluído, porque as tabelas relevantes não são mais as mesmas.