2 – Na busca acima, estamos usando a query no modelo do Active Record. Atualizando a página na view, e clicando em “Procurar”, devemos filtrar as idades com a seguinte performance:
Usamos o método find_by_sql para executar o SQL diretamente (sem o active records fazendo isso para nós).
6 – Fazendo uma nova busca com os mesmos parâmetros buscados pela primeira vez, nós conseguimos o seguinte resultado:
7 – Só nesse pequeno projeto conseguimos reduzir de 74.5ms de carregamento do ActiveRecord, para 25.4ms de carregamento. Um carregamento 3 vezes mais rápido \o/.
Obtivemos esse resultado em um mini projeto, usando poucos atributos e um número de rows limitados. Imagine em empresas realmente grandes, com centenas de milhares de records no banco de dados… Uma otimização dessas pouparia preciosos segundos, e até minutos de diferença no carregamento!!
Uma observação é que ao lidar com BDs com uma grande quantidade de dados, o mais indicado é o uso de queries SQL ao máximo, evitando a automatização de buscas e o aparecimento de lazy queries (Percorrer uma query a mais, desnecessária na busca, aumentando o tempo de carregamento por uma má formação da query SQL no banco de dados) causado pelo Active Record.
Desenvolvedor Full Stack com foco em Ruby On Rails, formado na OneBitCode's school hahaha Sempre com novos projetos e entusiasta de novas metodologias e tecnologias em prol de melhor qualidade para o desenvolvimento de novos apps! \o/