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"><<a href="mailto:edencardim@gmail.com">edencardim@gmail.com</a>></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">>>>>> "Renato" == Renato Santos <<a href="mailto:renato.cron@gmail.com">renato.cron@gmail.com</a>> writes:<br>
<br>
Renato> Como eu usaria o Exists? Ah, vou tentar explicar para que<br>
Renato> criem os indexs.<br>
<br>
<br>
Renato> Algo como: CREATE TEMP TABLE tmp_ciclos AS SELECT ciclo FROM<br>
Renato> tb_ciclo_inicio GROUP BY ciclo ORDER BY ciclo DESC limit 10;<br>
<br>
<br>
Renato> SELECT a.cod_cn, a.ciclo FROM tb_ciclo_inicio a INNER JOIN<br>
Renato> 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 <= (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>