my god!<br>acho q vou parar de estudar jogos e vou virar DBA, amei essa do WITH!<br><br>(obs; tenho 18 anos, e nao sai do 3 ano ainda...)<br><br><div class="gmail_quote">2010/7/30 Eden Cardim <span dir="ltr">&lt;<a href="mailto:edencardim@gmail.com">edencardim@gmail.com</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><div></div><div class="h5">&gt;&gt;&gt;&gt;&gt; &quot;Renato&quot; == Renato Santos &lt;<a href="mailto:renato.cron@gmail.com">renato.cron@gmail.com</a>&gt; writes:<br>


<br>
    Renato&gt; Como eu usaria o Exists?  Ah, vou tentar explicar para que<br>
    Renato&gt; criem os indexs.<br>
<br>
<br>
    Renato&gt; Algo como: CREATE TEMP TABLE tmp_ciclos AS SELECT ciclo FROM<br>
    Renato&gt; tb_ciclo_inicio GROUP BY ciclo ORDER BY ciclo DESC limit 10;<br>
<br>
<br>
    Renato&gt; SELECT a.cod_cn, a.ciclo FROM tb_ciclo_inicio a INNER JOIN<br>
    Renato&gt; tmp_ciclos b ON (a.ciclo = b.ciclo) ORDER BY cod_cn, ciclo<br>
<br>
<br>
Cuidado, você precisa de um lock na tabela pra garantir resultados<br>
consistentes. Alguma consulta pode mudar a ordenação da tabela antes que<br>
a segunda consulta execute, e aí você vai obter os valores errados.<br>
<br>
Essa é uma consulta bem chatinha de implementar mesmo, eu mudaria um<br>
pouco a estratégia:<br>
<br>
WITH cutoff AS<br>
( SELECT min(ciclo) AS val<br>
    FROM tb_ciclo_inicio<br>
    ORDER BY ciclo DESC LIMIT 10<br>
)<br>
SELECT tci.cod_cn, tci.ciclo<br>
FROM tb_ciclo_inicio tci<br>
WHERE tci.ciclo &lt;= (SELECT val FROM cutoff);<br>
<br>
A cláusula WITH cria a tabela temporária automaticamente e como só tem 1<br>
registro na tabela, não tem como acontecer scan. Sem o join vai<br>
acontecer só um scan bem menor na tabela principal que com um índice<br>
deve virar um index scan, que geralmente é rápido o suficiente, além<br>
disso, tudo isso vai ocorrer dentro de uma única transação. P.S.: eu não<br>
testei a consulta acima, pode ser que tenha algum erro de sintaxe.<br>
_______________________________________________<br>
</div></div><div><div></div><div class="h5">SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a></div></div></blockquote></div><br><br clear="all"><br>-- <br>Renato Santos<br><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a><br>