Usando o fragmento SQL executa a consulta que queremos:
Mas, ao acessar os relacionamentos do objeto, obtemos todas as linhas relacionadas, não o
Aqueles que você deseja (ou seja, usando o ActiveRecord ORM do Rails, vamos devolver uma lista de super -heróis, então se eles
estão em um grupo de bate -papo de propriedade de Hulk, devolve esses grupos também.No entanto, uma vez um
SQL bruto se torna necessário para o desempenho, é melhor favorecer o bloqueio do banco de dados
– A alternativa é mais lenta interações genéricas de banco de dados.Então, às vezes, os filtros precisam estar na cláusula de junção, em vez de estar em
a cláusula onde.É uma tentativa de resolver deficiências de recuperação de dados usando o aplicativo
Código de nível:
Claro, isso funciona … mas, não escala.
Fonte: https://www.crunchydata.com/blog/postgresql-for-solving-n+1-queries-in-ruby-on-rails