Obrigado, Osvaldo. Vou testar e se surgir alguma dúvida retomo a discussão.
-- Tiago J. Adami Dois Vizinhos - Paraná - Brasil 2009/7/30 Osvaldo Kussama <[email protected]> > 2009/7/30 Tiago Adami <[email protected]>: > > Seguindo o raciocínio do nobre colega Fábio Ebner, tenho um problema que > não > > consegui resolver de forma que não degrade a performance... > > > > Tenho uma tabela com 11 milhões de registros. Existe um campo que é um > > contador numérico, e é uma AK da tabela (contador de transação). Pois > bem... > > eu gostaria de um SELECT que retornasse apenas os números que não estão > > nesta tabela em um intervalo de 1 a 11.000.000 (que é o total de > registros). > > Se eu delimitasse o máximo até 10, seria assim: > > [Registros na tabela] > > 1 > > 2 > > 3 --> não existe > > 4 > > 5 > > 6 > > 8 > > 7 --> não existe > > 9 > > 10 > > (...) > > > > Até 10, os números que o select deveria retornar são: > > [Registros que não estão na tabela] > > 3 > > 7 > > > > Hoje eu uso um trigger que alimenta uma tabela auxiliar cada vez que um > > registro é eliminado. Isto é rápido, mas gostaria de saber se existe uma > > forma de criar uma função ou algo parecido que não use trigger e não seja > > muito demorado (considerando 11 milhões de registros). > > > > Desculpem a impertinência, mas alguém tem alguma sugestão melhor? > > > > > bdteste=# CREATE TEMP TABLE foo(num int); > CREATE TABLE > bdteste=# INSERT INTO foo VALUES (1),(2),(4),(5),(6),(8),(9),(10); > INSERT 0 8 > > bdteste=# SELECT x FROM (SELECT generate_series(1,10)) AS f(x) LEFT > OUTER JOIN foo ON (f.x = num) WHERE num IS NULL; > x > --- > 3 > 7 > (2 registros) > > ou ainda: > > bdteste=# SELECT generate_series(1,10) EXCEPT SELECT num FROM foo; > generate_series > ----------------- > 3 > 7 > (2 registros) > > Osvaldo > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
