«

»

Dec 05

Print this Post

Simples query-of-queries

Problema:

Um grande conjunto de dados pode causar problemas de desempenho se um aplicativo precisar consultar o banco detalhadamente  para chegar a dados específicos.

Solução:

ColdFusion permite queries executarem sobre outras queries existentes com um sub-grupo de comandos SQL ádisponiveis para uso.

Explicação detalhada:

Seum aplicativo tem uma grande query que é executada e então precisa filtrar dados, não é sempre bom para o desempenho fazer uma viagem ao database para recuperar os dados filtrados. Carregando a grande query em memória e usando a funcionalidade query-of-queries do ColdFusion é uma solução fácil. Por exemplo, um catálogo de produtos é sempre pesquisado em qualquer número de variáveis tais como categoria, faixa de preço, médias, etc.

A query principal de produtos pode ser carregada no escope application no métodoonApplicationStart do Application.cfc.


<cfquery name="APPLICATION.qGetProducts" datasource="dsn">
     SELECT *
     FROM tbl_Products
</cfquery>

Usando uma query-of-queries o aplicativo pode filtrar o grande dataset sem ter que fazer outra viagem ao database. Em vez de fornecer um atributo datasource, a <cfquery> configura o atributo dbtype para a grande query e nas instruções SQL, a keyword FROM usa o nome da query em vez do nome da tabela.


<cfquery name="qGetProductsByCategory" dbtype="query">
     SELECT *
     FROM APPLICATION.qGetProducts
     WHERE categoryId = <cfqueryparam value="#FORM.categoryId#" cfsqltype="cf_sql_integer" />
</cfquery>

Esta e uma grande ferramenta para ajudar o desempenho, entretanto voce está limitado a um específico sub-grupo de comandos SQL quando usar query-of-queries.

Tambem, lembre-se que voce pode usar query-of-queries em qualquer tag ColdFusion que produza um recordset, não somente a tag <cfquery>.

by Kevin Schmidt
Versao em ingles: Adobe ColdFsuion Cookbook

Permanent link to this article: http://ensina.me/coldfusion/simples-query-of-queries/

Leave a Reply