TUDO SOBRE EAD

Coloque o seu email aqui para receber gratuitamente as atualizações do blog!

ActiveRecord – Otimizando consultas com subqueries


Muitas vezes, precisamos escrever queries pesadas para realizar determinadas buscas no banco de dados e a ajuda de um framework como o Ruby on Rails é sempre bem vinda. Contudo, se você quer tirar melhor proveito do framework e otimizar consultas pesadas, precisa entender o que acontece por baixo dos panos. Pensando nisso, vou mostrar algumas técnicas do Rails para otimizar a performance das suas queries e consequentemente melhorar o tempo de resposta do seu sistema.

Otimizar acesso ao banco

Sempre que executamos uma query no banco de dados, o Rails abre uma ActiveRecord::Relation. Por isso, é importante se esforçar para que tudo aconteça dentro de uma única query, evitando assim que o Rails abra mais de uma relation. A melhor maneira de desenvolver isso é utilizando scope com subqueries.

Utilizando scope

O scope funciona perfeitamente para manter tudo na mesma relation, com ele é possível concatenar quantas queries você precisar. Veja nesse simples exemplo.

Subqueries

Uma query pode ser mais complexa que outra, quando por exemplo for necessário utilizar joins.

Nesse caso foi utilizado o método select, retornando só o campo necessário e fazendo uma query bem leve, alem disso realiza uma subquery na mesma relation.

Próximo capítulo…

Esse foi o primeiro post sobre consultas ao banco de dados com rails, espero ter ajudado com essas dicas para otimizar suas queries. Existem outras coisas bem interessantes no Rails 4 que vou mostrar em um próximo capítulo.

Como abraçamos o ES6 em nossas aplicações - Parte 2 - Controllers
Automatizando tarefas com web crawlers - Mechanize

Conteúdo VIP

Coloque o seu email abaixo para receber gratuitamente as atualizações do blog!

Sobre William Belchior

Desenvolvedor de Sistemas para o ambiente móbile na plataforma Google Android e Sistemas Web utilizando a linguagem Ruby com o Framework Rails, programação Orientada a Objetos e trabalho em equipe utilizando metodologia ágil de desenvolvimento Scrum. Formado em Sistemas de Informação na Unilasalle. Comprometimento e atuação com foco em resultados, interessado em novas tecnologias e boas praticas de programação.
Ver todos os posts de William Belchior

Deixe uma resposta