[pgbr-geral] Paginação
Pessoal, tô estudando sobre paginação no PostgreSQL. dei uma olhadinha na lista e achei algumas coisas interessantes. No entanto, estou enviando este email para ver se alguém tem algum link que me mostre bem detalhado como é o processo de paginação no PostgreSQL. Exemplo Se eu tenho um SQL que vai me retornar 1 registros quero exibir 50 por páginas. obrigado pela atenção -- Sérgio Antônio dos Santos Bacharel em Sistemas de Informação (31) 8573-7004 ### Vem aí... SEARA 2009 21 a 24 de Fevereiro - Campus da UFV - Viçosa - MG Alcancei misericórdia e a graça do Senhor foi imensa. (ITm 1, 13b, 14a) ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Paginação
Olá, Qual tipo de paginação você está se referindo? A paginação interna ou você fala paginação através do limit e offset (select campo1,campo2 from tabela limit 10) para a exibição dos registros? []s 2009/2/18 sergio santos sergio.serginhos...@gmail.com: Pessoal, tô estudando sobre paginação no PostgreSQL. dei uma olhadinha na lista e achei algumas coisas interessantes. No entanto, estou enviando este email para ver se alguém tem algum link que me mostre bem detalhado como é o processo de paginação no PostgreSQL. Exemplo Se eu tenho um SQL que vai me retornar 1 registros quero exibir 50 por páginas. obrigado pela atenção -- Sérgio Antônio dos Santos Bacharel em Sistemas de Informação (31) 8573-7004 ### Vem aí... SEARA 2009 21 a 24 de Fevereiro - Campus da UFV - Viçosa - MG Alcancei misericórdia e a graça do Senhor foi imensa. (ITm 1, 13b, 14a) ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- João Paulo www.dextra.com.br/postgres PostgreSQL ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Paginação
Olá Jota, obrigado pela resposta tô me referindo a paginação em SQL exemplo: se minha consulta retornar 1000 registros tenho que passar um parâmetro para o banco informando que quero exibir somente os registros entre 150 e 200 ou seja, serão exibidos 50 registro, isso de forma dinâmica fazendo com que a minha consulta sql faça uma paginação. acho que é isso. 2009/2/18 Jota jota.c...@gmail.com Olá, Qual tipo de paginação você está se referindo? A paginação interna ou você fala paginação através do limit e offset (select campo1,campo2 from tabela limit 10) para a exibição dos registros? []s 2009/2/18 sergio santos sergio.serginhos...@gmail.com: Pessoal, tô estudando sobre paginação no PostgreSQL. dei uma olhadinha na lista e achei algumas coisas interessantes. No entanto, estou enviando este email para ver se alguém tem algum link que me mostre bem detalhado como é o processo de paginação no PostgreSQL. Exemplo Se eu tenho um SQL que vai me retornar 1 registros quero exibir 50 por páginas. obrigado pela atenção -- Sérgio Antônio dos Santos Bacharel em Sistemas de Informação (31) 8573-7004 ### Vem aí... SEARA 2009 21 a 24 de Fevereiro - Campus da UFV - Viçosa - MG Alcancei misericórdia e a graça do Senhor foi imensa. (ITm 1, 13b, 14a) ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- João Paulo www.dextra.com.br/postgres PostgreSQL ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Sérgio Antônio dos Santos Bacharel em Sistemas de Informação (31) 8573-7004 ### Vem aí... SEARA 2009 21 a 24 de Fevereiro - Campus da UFV - Viçosa - MG Alcancei misericórdia e a graça do Senhor foi imensa. (ITm 1, 13b, 14a) ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Paginação
2009/2/18 sergio santos sergio.serginhos...@gmail.com: tô me referindo a paginação em SQL exemplo: se minha consulta retornar 1000 registros tenho que passar um parâmetro para o banco informando que quero exibir somente os registros entre 150 e 200 ou seja, serão exibidos 50 registro, isso de forma dinâmica fazendo com que a minha consulta sql faça uma paginação. Então, reafirmando o que Jota já havia dito, utilize as cláusulas LIMIT e OFFSET do SELECT. http://www.postgresql.org/docs/current/interactive/sql-select.html Para o seu exemplo: SELECT * FROM sua_tabela OFFSET 150 LIMIT 50 ORDER BY x; Para variar o OFFSET ou faça isso em sua aplicação ou crie uma função em que o valor do offset seja o parâmetro ou utilize um PREPARE/EXECUTE: http://www.postgresql.org/docs/current/interactive/sql-prepare.html Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Paginação
ok Osvaldo certinho! obrigado pela atenção abraços 2009/2/18 Osvaldo Kussama osvaldo.kuss...@gmail.com 2009/2/18 sergio santos sergio.serginhos...@gmail.com: tô me referindo a paginação em SQL exemplo: se minha consulta retornar 1000 registros tenho que passar um parâmetro para o banco informando que quero exibir somente os registros entre 150 e 200 ou seja, serão exibidos 50 registro, isso de forma dinâmica fazendo com que a minha consulta sql faça uma paginação. Então, reafirmando o que Jota já havia dito, utilize as cláusulas LIMIT e OFFSET do SELECT. http://www.postgresql.org/docs/current/interactive/sql-select.html Para o seu exemplo: SELECT * FROM sua_tabela OFFSET 150 LIMIT 50 ORDER BY x; Para variar o OFFSET ou faça isso em sua aplicação ou crie uma função em que o valor do offset seja o parâmetro ou utilize um PREPARE/EXECUTE: http://www.postgresql.org/docs/current/interactive/sql-prepare.html Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Sérgio Antônio dos Santos Bacharel em Sistemas de Informação (31) 8573-7004 ### Vem aí... SEARA 2009 21 a 24 de Fevereiro - Campus da UFV - Viçosa - MG Alcancei misericórdia e a graça do Senhor foi imensa. (ITm 1, 13b, 14a) ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Paginação
Endendo que a questão está muito mais para a ótica de um aplicativo do que para o SGBD, mas aproveitando esta dúvida eu gostaria de perguntar o seguinte: em um caso como esse, é mais fácil (ou dinâmico) a manipulação de um cursor, onde o postgres se preocupa com o dimensionamento do resultado ou utilizando LIMIT e OFFSET as consultas são de alguma forma otimizadas? []´s 2009/2/18 Osvaldo Kussama osvaldo.kuss...@gmail.com 2009/2/18 sergio santos sergio.serginhos...@gmail.com: tô me referindo a paginação em SQL exemplo: se minha consulta retornar 1000 registros tenho que passar um parâmetro para o banco informando que quero exibir somente os registros entre 150 e 200 ou seja, serão exibidos 50 registro, isso de forma dinâmica fazendo com que a minha consulta sql faça uma paginação. Então, reafirmando o que Jota já havia dito, utilize as cláusulas LIMIT e OFFSET do SELECT. http://www.postgresql.org/docs/current/interactive/sql-select.html Para o seu exemplo: SELECT * FROM sua_tabela OFFSET 150 LIMIT 50 ORDER BY x; Para variar o OFFSET ou faça isso em sua aplicação ou crie uma função em que o valor do offset seja o parâmetro ou utilize um PREPARE/EXECUTE: http://www.postgresql.org/docs/current/interactive/sql-prepare.html Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- José de Mello Júnior 41.9957-2007 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Paginação
Olá, Bem lembrado pelo Osvaldo, se você utilizar um cursor deve manter uma transação em aberto para processar. Também não sei precisar qual é mais eficiente. []s 2009/2/18 Osvaldo Kussama osvaldo.kuss...@gmail.com: 2009/2/18 José Mello Júnior jose.mello.jun...@gmail.com: Endendo que a questão está muito mais para a ótica de um aplicativo do que para o SGBD, mas aproveitando esta dúvida eu gostaria de perguntar o seguinte: em um caso como esse, é mais fácil (ou dinâmico) a manipulação de um cursor, onde o postgres se preocupa com o dimensionamento do resultado ou utilizando LIMIT e OFFSET as consultas são de alguma forma otimizadas? Creio que para utilizar CURSOR neste caso você necessita manter uma transação aberta. Se isso não for um empecilho é realmente uma alternativa. Não sei qual das soluções (CURSOR ou OFFSET/LIMIT) é mais eficiente. Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- João Paulo www.dextra.com.br/postgres PostgreSQL ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Paginação
Veja bem pessoal, se eu usar o limit o método RecordCount do Adodb vai me retornar o valor limit e não o número de registro. Sendo assim, como estou fazendo uma paginação, vai ficar difícil saber o número de páginas vou ter o que vocês acham? 2009/2/18 José Mello Júnior jose.mello.jun...@gmail.com Endendo que a questão está muito mais para a ótica de um aplicativo do que para o SGBD, mas aproveitando esta dúvida eu gostaria de perguntar o seguinte: em um caso como esse, é mais fácil (ou dinâmico) a manipulação de um cursor, onde o postgres se preocupa com o dimensionamento do resultado ou utilizando LIMIT e OFFSET as consultas são de alguma forma otimizadas? []´s 2009/2/18 Osvaldo Kussama osvaldo.kuss...@gmail.com 2009/2/18 sergio santos sergio.serginhos...@gmail.com: tô me referindo a paginação em SQL exemplo: se minha consulta retornar 1000 registros tenho que passar um parâmetro para o banco informando que quero exibir somente os registros entre 150 e 200 ou seja, serão exibidos 50 registro, isso de forma dinâmica fazendo com que a minha consulta sql faça uma paginação. Então, reafirmando o que Jota já havia dito, utilize as cláusulas LIMIT e OFFSET do SELECT. http://www.postgresql.org/docs/current/interactive/sql-select.html Para o seu exemplo: SELECT * FROM sua_tabela OFFSET 150 LIMIT 50 ORDER BY x; Para variar o OFFSET ou faça isso em sua aplicação ou crie uma função em que o valor do offset seja o parâmetro ou utilize um PREPARE/EXECUTE: http://www.postgresql.org/docs/current/interactive/sql-prepare.html Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- José de Mello Júnior 41.9957-2007 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Sérgio Antônio dos Santos Bacharel em Sistemas de Informação (31) 8573-7004 ### Vem aí... SEARA 2009 21 a 24 de Fevereiro - Campus da UFV - Viçosa - MG Alcancei misericórdia e a graça do Senhor foi imensa. (ITm 1, 13b, 14a) ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Paginação
2009/2/18 sergio santos sergio.serginhos...@gmail.com: Veja bem pessoal, se eu usar o limit o método RecordCount do Adodb vai me retornar o valor limit e não o número de registro. Sendo assim, como estou fazendo uma paginação, vai ficar difícil saber o número de páginas vou ter o que vocês acham? Ola Sergio, Você precisa saber *exatamente* quantas paginas darão? Uma estimativa (assim como o Google faz) já não ajudaria? Dependendo do tamanho desta sua tabela você pode aproveitar as estatísticas do banco, ao invés de fazer um count(*) para saber o total de registros e paginar. Faça um teste de exemplo em uma *base de teste*: CREATE TABLE temp (a int); INSERT INTO temp SELECT generate_series(1,10); SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; ANALYZE temp; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; INSERT INTO temp SELECT generate_series(1,2); SELECT count(*) from temp; ANALYZE temp; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; SELECT count(*) from temp; DROP TABLE temp; Veja como os resultados podem variar no caso do count a medida que o volume de dados vai crescendo. Obviamente o script acima não contem a solução pronta, é apenas uma demonstração de que é possível trabalhar com estimativas ao invés de exatos, em determinadas situações. Para se aprofundar, leia: http://www.postgresql.org/docs/current/static/monitoring-stats.html Dickson S. Guedes - mail/xmpp: gue...@guedesoft.net - skype: guediz http://guedesoft.net - http://planeta.postgresql.org.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Paginação
Olá, Ótima dica do Guedes. 2009/2/18 Dickson S. Guedes lis...@guedesoft.net: 2009/2/18 sergio santos sergio.serginhos...@gmail.com: Veja bem pessoal, se eu usar o limit o método RecordCount do Adodb vai me retornar o valor limit e não o número de registro. Sendo assim, como estou fazendo uma paginação, vai ficar difícil saber o número de páginas vou ter o que vocês acham? Ola Sergio, Você precisa saber *exatamente* quantas paginas darão? Uma estimativa (assim como o Google faz) já não ajudaria? Dependendo do tamanho desta sua tabela você pode aproveitar as estatísticas do banco, ao invés de fazer um count(*) para saber o total de registros e paginar. Faça um teste de exemplo em uma *base de teste*: CREATE TABLE temp (a int); INSERT INTO temp SELECT generate_series(1,10); SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; ANALYZE temp; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; INSERT INTO temp SELECT generate_series(1,2); SELECT count(*) from temp; ANALYZE temp; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; SELECT count(*) from temp; DROP TABLE temp; Veja como os resultados podem variar no caso do count a medida que o volume de dados vai crescendo. Obviamente o script acima não contem a solução pronta, é apenas uma demonstração de que é possível trabalhar com estimativas ao invés de exatos, em determinadas situações. Para se aprofundar, leia: http://www.postgresql.org/docs/current/static/monitoring-stats.html Dickson S. Guedes - mail/xmpp: gue...@guedesoft.net - skype: guediz http://guedesoft.net - http://planeta.postgresql.org.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- João Paulo www.dextra.com.br/postgres PostgreSQL ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Paginação
Vc tá programando em que Terminei hoje uma classe em PHP, para fazer paginação. A unica coisa que não consegui eliminar ainda é o count(*) para saber a quantidade total de registros. Mas eu passo a pagina atual e a quantidade de registros por pagina, e monto o select assim: limit (qtd_registros_por_pagina) offset ( (pagina-1)*qtd_registros_por_pagina) []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.amados.com.br/podcast - Peça gratuitamente um curso Bíblico http://tempodesalvacao.blogspot.com/ http://bbnradio.org/ - Ouça a rádio e faça gratuitamente um Curso Biblico 2009/2/18 sergio santos sergio.serginhos...@gmail.com Veja bem pessoal, se eu usar o limit o método RecordCount do Adodb vai me retornar o valor limit e não o número de registro. Sendo assim, como estou fazendo uma paginação, vai ficar difícil saber o número de páginas vou ter o que vocês acham? 2009/2/18 José Mello Júnior jose.mello.jun...@gmail.com Endendo que a questão está muito mais para a ótica de um aplicativo do que para o SGBD, mas aproveitando esta dúvida eu gostaria de perguntar o seguinte: em um caso como esse, é mais fácil (ou dinâmico) a manipulação de um cursor, onde o postgres se preocupa com o dimensionamento do resultado ou utilizando LIMIT e OFFSET as consultas são de alguma forma otimizadas? []´s 2009/2/18 Osvaldo Kussama osvaldo.kuss...@gmail.com 2009/2/18 sergio santos sergio.serginhos...@gmail.com: tô me referindo a paginação em SQL exemplo: se minha consulta retornar 1000 registros tenho que passar um parâmetro para o banco informando que quero exibir somente os registros entre 150 e 200 ou seja, serão exibidos 50 registro, isso de forma dinâmica fazendo com que a minha consulta sql faça uma paginação. Então, reafirmando o que Jota já havia dito, utilize as cláusulas LIMIT e OFFSET do SELECT. http://www.postgresql.org/docs/current/interactive/sql-select.html Para o seu exemplo: SELECT * FROM sua_tabela OFFSET 150 LIMIT 50 ORDER BY x; Para variar o OFFSET ou faça isso em sua aplicação ou crie uma função em que o valor do offset seja o parâmetro ou utilize um PREPARE/EXECUTE: http://www.postgresql.org/docs/current/interactive/sql-prepare.html Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- José de Mello Júnior 41.9957-2007 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Sérgio Antônio dos Santos Bacharel em Sistemas de Informação (31) 8573-7004 ### Vem aí... SEARA 2009 21 a 24 de Fevereiro - Campus da UFV - Viçosa - MG Alcancei misericórdia e a graça do Senhor foi imensa. (ITm 1, 13b, 14a) ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Paginação
Puxa vou ler sobre. []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.amados.com.br/podcast - Peça gratuitamente um curso Bíblico http://tempodesalvacao.blogspot.com/ http://bbnradio.org/ - Ouça a rádio e faça gratuitamente um Curso Biblico 2009/2/18 Dickson S. Guedes lis...@guedesoft.net 2009/2/18 sergio santos sergio.serginhos...@gmail.com: Veja bem pessoal, se eu usar o limit o método RecordCount do Adodb vai me retornar o valor limit e não o número de registro. Sendo assim, como estou fazendo uma paginação, vai ficar difícil saber o número de páginas vou ter o que vocês acham? Ola Sergio, Você precisa saber *exatamente* quantas paginas darão? Uma estimativa (assim como o Google faz) já não ajudaria? Dependendo do tamanho desta sua tabela você pode aproveitar as estatísticas do banco, ao invés de fazer um count(*) para saber o total de registros e paginar. Faça um teste de exemplo em uma *base de teste*: CREATE TABLE temp (a int); INSERT INTO temp SELECT generate_series(1,10); SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; ANALYZE temp; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; INSERT INTO temp SELECT generate_series(1,2); SELECT count(*) from temp; ANALYZE temp; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; SELECT count(*) from temp; DROP TABLE temp; Veja como os resultados podem variar no caso do count a medida que o volume de dados vai crescendo. Obviamente o script acima não contem a solução pronta, é apenas uma demonstração de que é possível trabalhar com estimativas ao invés de exatos, em determinadas situações. Para se aprofundar, leia: http://www.postgresql.org/docs/current/static/monitoring-stats.html Dickson S. Guedes - mail/xmpp: gue...@guedesoft.net - skype: guediz http://guedesoft.net - http://planeta.postgresql.org.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Paginação
Pessoal, Outra opção é realizar um select na tabela pg_class pelo atributo reltuples, assim é possível extrair a quantidade de linhas da sua tabela. Porém, é importante executar o analyze no mínimo uma vez por dia para ter estatísticas mais precisas. O select é: SELECT reltuples FROM pg_class WHERE relname='nome_da_tabela'; []s 2009/2/18 Nilson Chagas nilson.chagas.si...@gmail.com: Puxa vou ler sobre. []s Nilson Chagas - Ubuntu User 25794 --- Visite: http://www.amados.com.br/podcast - Peça gratuitamente um curso Bíblico http://tempodesalvacao.blogspot.com/ http://bbnradio.org/ - Ouça a rádio e faça gratuitamente um Curso Biblico 2009/2/18 Dickson S. Guedes lis...@guedesoft.net 2009/2/18 sergio santos sergio.serginhos...@gmail.com: Veja bem pessoal, se eu usar o limit o método RecordCount do Adodb vai me retornar o valor limit e não o número de registro. Sendo assim, como estou fazendo uma paginação, vai ficar difícil saber o número de páginas vou ter o que vocês acham? Ola Sergio, Você precisa saber *exatamente* quantas paginas darão? Uma estimativa (assim como o Google faz) já não ajudaria? Dependendo do tamanho desta sua tabela você pode aproveitar as estatísticas do banco, ao invés de fazer um count(*) para saber o total de registros e paginar. Faça um teste de exemplo em uma *base de teste*: CREATE TABLE temp (a int); INSERT INTO temp SELECT generate_series(1,10); SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; ANALYZE temp; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; INSERT INTO temp SELECT generate_series(1,2); SELECT count(*) from temp; ANALYZE temp; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; SELECT pg_stat_get_live_tuples(oid) from pg_class where relname = 'temp'; SELECT count(*) from temp; DROP TABLE temp; Veja como os resultados podem variar no caso do count a medida que o volume de dados vai crescendo. Obviamente o script acima não contem a solução pronta, é apenas uma demonstração de que é possível trabalhar com estimativas ao invés de exatos, em determinadas situações. Para se aprofundar, leia: http://www.postgresql.org/docs/current/static/monitoring-stats.html Dickson S. Guedes - mail/xmpp: gue...@guedesoft.net - skype: guediz http://guedesoft.net - http://planeta.postgresql.org.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- João Paulo www.dextra.com.br/postgres PostgreSQL ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Paginação
Olá, Vc pode utilizar a coluna reltuples da pg_class: select reltuples from pg_class where relname = 'minha_tabela'; Mas tem que rodar um ANALYZE frequentemente para ter esse valor mais próximo da realidade. -- Fabrízio de Royes Mello Blog sobre PostgreSQL: http://fabriziomello.blogspot.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral