Eu aconselharia separar o resumo das somas do SELECT principal. Do jeito atual, ele agrupa por b.valor, b.dc, b.nrecibo, d.valor, então pode gerar várias linhas e ainda obriga o Firebird a agrupar mais dados do que precisa.
Também tem dois possíveis erros:
FROM PAGARB bINNER JOIN PAGARD d
deveria ...
Pesquisa resultou em 3639 ocorrências: +SELECT
Termo pesquisado: +select
- 12 Mai 2026 22:02
- Fórum: Banco de Dados
- Tópico: Select demorando
- Respostas: 12
- Exibições: 1617
- 11 Mai 2026 23:21
- Fórum: Banco de Dados
- Tópico: Select demorando
- Respostas: 12
- Exibições: 1617
Re: Select demorando
Olá!
Chamou minha atenção esta frase na resposta da IA:
## Por que isso fica mais rápido?
1. SARGability: Ao usar coluna = :valor, o Firebird usa o índice da chave primária ou estrangeira.
Recorrendo novamente a ela:
SARGability (uma contração de Search ARGument ABLE) refere-se à capacidade ...
Chamou minha atenção esta frase na resposta da IA:
## Por que isso fica mais rápido?
1. SARGability: Ao usar coluna = :valor, o Firebird usa o índice da chave primária ou estrangeira.
Recorrendo novamente a ela:
SARGability (uma contração de Search ARGument ABLE) refere-se à capacidade ...
- 07 Mai 2026 20:07
- Fórum: Banco de Dados
- Tópico: Select demorando
- Respostas: 12
- Exibições: 1617
Re: Select demorando
Boa noite.
Alexandre, o índice está correto, sem concatenar, estão separados por virgula.
A rotina com o case traz instantâneo, porém não traz somado por grupo (sum).
Se tiver 10 lançamentos na baixa, traz 10 lançamentos, não agrupados.
Fiz diversas alterações, mas não resolveu.
Vou mexer ...
Alexandre, o índice está correto, sem concatenar, estão separados por virgula.
A rotina com o case traz instantâneo, porém não traz somado por grupo (sum).
Se tiver 10 lançamentos na baixa, traz 10 lançamentos, não agrupados.
Fiz diversas alterações, mas não resolveu.
Vou mexer ...
- 06 Mai 2026 21:54
- Fórum: Banco de Dados
- Tópico: Select demorando
- Respostas: 12
- Exibições: 1617
Re: Select demorando
Olá!
Obrigado Alexandre, vou fazer o teste aqui.
Gostaria de saber se funcionou e se melhorou a performance.
ela já esta com o ìndice docum+codfor+tpnota+serie+ordem
Não sei como está criando o índice, mas não pode ser como em Clipper, concatenado campos.
Sintaxe do Firebird:
CREATE INDEX ...
Obrigado Alexandre, vou fazer o teste aqui.
Gostaria de saber se funcionou e se melhorou a performance.
ela já esta com o ìndice docum+codfor+tpnota+serie+ordem
Não sei como está criando o índice, mas não pode ser como em Clipper, concatenado campos.
Sintaxe do Firebird:
CREATE INDEX ...
- 06 Mai 2026 20:19
- Fórum: Banco de Dados
- Tópico: Select demorando
- Respostas: 12
- Exibições: 1617
Re: Select demorando
Obrigado Alexandre, vou fazer o teste aqui.
Poka
Poka
- 06 Mai 2026 18:07
- Fórum: Banco de Dados
- Tópico: Select demorando
- Respostas: 12
- Exibições: 1617
Re: Select demorando
Olá!
Perguntei para a IA do Google:
Como melhorar a performance deste SELECT em Firebird 2.5? A performance está lenta...
Resposta:
O principal motivo da lentidão é o uso de concatenação de campos (||) e funções (como trim) nas cláusulas WHERE e JOIN. Isso impede o Firebird de usar índices ...
Perguntei para a IA do Google:
Como melhorar a performance deste SELECT em Firebird 2.5? A performance está lenta...
Resposta:
O principal motivo da lentidão é o uso de concatenação de campos (||) e funções (como trim) nas cláusulas WHERE e JOIN. Isso impede o Firebird de usar índices ...
- 06 Mai 2026 16:38
- Fórum: Banco de Dados
- Tópico: Select demorando
- Respostas: 12
- Exibições: 1617
Re: Select demorando
... os campos.
Alexandre, não sei como excluir o anterior.
Nessa função a variável xchave ja vem concatenada com docum+codfor+tpnota+serie+ordem.
No select a variavel pagarB e pagarD é o nome da tabela que pode ser pagard001...e pagarD001... para cada empresa da empresa ususaria,
pode deixar dentro do ...
Alexandre, não sei como excluir o anterior.
Nessa função a variável xchave ja vem concatenada com docum+codfor+tpnota+serie+ordem.
No select a variavel pagarB e pagarD é o nome da tabela que pode ser pagard001...e pagarD001... para cada empresa da empresa ususaria,
pode deixar dentro do ...
- 05 Mai 2026 18:54
- Fórum: Banco de Dados
- Tópico: Select demorando
- Respostas: 12
- Exibições: 1617
Re: Select demorando
Olá!
x + y + z
Em alguns SGBD, como Oracle e PostgreSQL, este é o operador de concatenação de strings. O mesmo que
x + y + z
- 05 Mai 2026 18:37
- Fórum: Banco de Dados
- Tópico: Select demorando
- Respostas: 12
- Exibições: 1617
Re: Select demorando
Não conheço o x || y || z
- 05 Mai 2026 18:30
- Fórum: Banco de Dados
- Tópico: Select demorando
- Respostas: 12
- Exibições: 1617
Re: Select demorando
Parece que está multiplicando uma consulta pela quantidade de registros na tabela.
E se entrar em loop, vai ser consulta infinita.
E ainda relaciona isso com mais consulta.
Nem quero tentar entender isso.
Mais prático o usuário se entender com a IA, explicando o que quer.
Com certeza a pesquisa ...
E se entrar em loop, vai ser consulta infinita.
E ainda relaciona isso com mais consulta.
Nem quero tentar entender isso.
Mais prático o usuário se entender com a IA, explicando o que quer.
Com certeza a pesquisa ...
- 04 Mai 2026 23:35
- Fórum: Banco de Dados
- Tópico: Select demorando
- Respostas: 12
- Exibições: 1617
Re: Select demorando
Olá!
Facilitaria bastante a análise e ajuda se você postasse o código SQL já concatenado, entre as tags code e /code..
select b.valor , b.dc , b.nrecibo , d.valor ,
(select sum(b.valor) from "+pagarb +" b where b.docum||b.codfor||b.tpnota||b.serie||b.ordem = '"+xchave+"' and b.dc = 'C' and trim ...
Facilitaria bastante a análise e ajuda se você postasse o código SQL já concatenado, entre as tags code e /code..
select b.valor , b.dc , b.nrecibo , d.valor ,
(select sum(b.valor) from "+pagarb +" b where b.docum||b.codfor||b.tpnota||b.serie||b.ordem = '"+xchave+"' and b.dc = 'C' and trim ...
- 04 Mai 2026 18:18
- Fórum: Banco de Dados
- Tópico: Select demorando
- Respostas: 12
- Exibições: 1617
Re: Select demorando
Olá!
Facilitaria bastante a análise e ajuda se você postasse o código SQL já concatenado, entre as tags code e /code...
Facilitaria bastante a análise e ajuda se você postasse o código SQL já concatenado, entre as tags code e /code...
- 04 Mai 2026 17:17
- Fórum: Banco de Dados
- Tópico: Select demorando
- Respostas: 12
- Exibições: 1617
Select demorando
Olá à todos,
alguém tem uma solução melhor? tá demorando.
pagarb é a tabela
ela já esta com o ìndice docum+codfor+tpnota+serie+ordem
str:="select b.valor , b.dc , b.nrecibo , d.valor ,";
+"(select sum(b.valor) from "+pagarb +" b where b.docum||b.codfor||b.tpnota||b.serie||b.ordem = '"+xchave ...
alguém tem uma solução melhor? tá demorando.
pagarb é a tabela
ela já esta com o ìndice docum+codfor+tpnota+serie+ordem
str:="select b.valor , b.dc , b.nrecibo , d.valor ,";
+"(select sum(b.valor) from "+pagarb +" b where b.docum||b.codfor||b.tpnota||b.serie||b.ordem = '"+xchave ...
- 03 Mai 2026 20:56
- Fórum: [x]Harbour
- Tópico: Gerenciador de Arquivos em Harbour
- Respostas: 9
- Exibições: 1014
Gerenciador de Arquivos em Harbour
... MAXROW()-2,0 say "File :"
@ MAXROW()-1,0 say "Menu " + chr(16)
@ MAXROW()-0,0 say "Esc=Menu/Exit "+chr(24)+chr(25)+chr(27)+chr(26)+"=Move Space=Select Enter=Execute Cut=Ctrl+X Copy=Ctrl+C Paste=Ctrl+V Delete=DELETE"
@ 1,20 say chr(24)
@ 1,MAXCOL() say chr(24)
for x=2 to MAXROW()-1-4
@ x,20 ...
@ MAXROW()-1,0 say "Menu " + chr(16)
@ MAXROW()-0,0 say "Esc=Menu/Exit "+chr(24)+chr(25)+chr(27)+chr(26)+"=Move Space=Select Enter=Execute Cut=Ctrl+X Copy=Ctrl+C Paste=Ctrl+V Delete=DELETE"
@ 1,20 say chr(24)
@ 1,MAXCOL() say chr(24)
for x=2 to MAXROW()-1-4
@ x,20 ...
- 02 Mai 2026 13:25
- Fórum: SQL
- Tópico: Harbour + SQLMIX
- Respostas: 31
- Exibições: 3325
Re: Harbour + SQLMIX
... cSQL := "INSERT INTO produto (descricao,modelo) values ('teste1','teste2')"
If rddInfo( RDDI_EXECUTE, cSQL )
dbusearea( .T., , "SELECT * FROM produto", "produto" )
alert('gravou')
Else
alert('falhou')
EndIF
Seguindo essa lógica, o que está faltando fazer ?
Detalhe, executei ...
If rddInfo( RDDI_EXECUTE, cSQL )
dbusearea( .T., , "SELECT * FROM produto", "produto" )
alert('gravou')
Else
alert('falhou')
EndIF
Seguindo essa lógica, o que está faltando fazer ?
Detalhe, executei ...