CFLOOP com CFQUERY, uma dica legal

Essa eu nunca vi por aí, aprendi sozinho e na marra, otimizando códigos feiosos e lerdos.

Se você está fazendo loopings em comandos SQL e tags CFQUERY, como no exemplo abaixo:

<CFLOOP INDEX=”counter” LIST=”#alguma_lista#”>
<CFQUERY NAME=”Query” DATASOURCE=”Datasource”>
Exemplo de Comando SQL
WHERE id=#counter#
</CFQUERY>
</CFLOOP>

Saiba que você pode poupar o pobre do seu BD mudando pouca coisa na sintáxe. O código abaixo deverá rodar 80% mais rapido que o anterior fazendo exatamente a mesma coisa, veja:

<CFQUERY NAME=”Query” DATASOURCE=”Datasource”>
<CFLOOP INDEX=”counter” LIST=”#alguma_lista#”>
Exemplo de Comando SQL
WHERE id=#counter#;
<CFLOOP>
</CFQUERY>

Perceba a mudança da tag CFLOOP para DENTRO da CFQUERY e a presença do ponto-e-vírgula no final da cláusula.

Pronto, agora você abre e fecha a conexão ao banco de dados (normalmente um processo que pode levar tempo), apenas uma vez! Um detalhe importante que você não pode esquecer: para que os comandos SQL funcionem corretamente você precisa separá-los com o ponto-e-vírgula (;). Essa é a sintaxe usada pelo MSSQL Server. Não sei ao certo qual é a sintaxe correta em outros bancos de dados (ou se é suportado de forma correta), mas isso funciona perfeitamente bem (e rápido, MUITO rápido) neste último. Faça o teste!


One Comment on “CFLOOP com CFQUERY, uma dica legal”

  1. george disse:

    legal !!!
    vc saberia me dizer como faço uma conexão com o MySQL ?