Tenho uma mesa que fica vazia a maior parte do tempo. Ocasionalmente, grandes quantidades de dados serão despejadas nele e precisarão ser processadas o mais rápido possível.
Eu tenho um processo que verifica continuamente a tabela e processa todos os dados que encontra.
Qual é a maneira mais rápida/eficiente de testar quaisquer dados na tabela?
A solução óbvia é ....
SELECT count(*) FROM myTable;
Mas isso pode demorar um pouco (especialmente se tiver alguns milhões de linhas). Outra solução é
SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = 'myTable'
Mas isso dá apenas um valor aproximado.
Existe uma solução melhor/mais rápida. OBSERVAÇÃO - não estou procurando uma contagem exata de linhas, estou procurando um resultado booleano vazio/não vazio simples.
Você pode usar uma condição existente:
O
limit 1
não é realmente necessário, pois o operador EXISTS irá parar na primeira linha de qualquer maneira