Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2068 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

ola a todos. tenho a seguinte situacao:

uma tabela de nota fiscal e outra de itens da nota fiscal. um simples master detail ao editar ou inserir um item na detail e clicar em cancelar( dbnavigator ou via query.cancel )

dar um delay de 2 a 3 segundos so pra executar o cancel. sendo q a tabela de itens tem apenas 5 registros

 

alguem ja passou por isso, sabe com contornar, ja tentei de tudo quando forma as dicas da embarcadero.

ate me desfiz do lookup pra melhorar, criei um projeto a parte do zero so pra testar.

se alguem tiver usando dblookup campo virtual na query com firedac e puder dar umas dicas. ou voces costumam usar o campo FK + DESCRICAO DO FK tipo:

COD_CLIENTE , NOME_CLI ENTE NAS TABELAS E NAO FAZEM JOIN?

 

  • Consultores
Postado

Você precisa debugar e analisar onde o tempo está sendo gasto exatamente no código. Pode usar algum profiler, por exemplo.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

ja debuguei e fiz inumeros testes e cheguei a conclusao:

1 - com CACHED UPDATES - funciona muito bom 

2 - modo normal um simples edit e depois cancel na tabela( delay de 2 a 3 segundos so pra cancelar a edicao )

3 - testei com UNIDAC - nao precisei configurar nada, 10X mais rapido que o FIREDAC. mais nao convem fazer update da aplicacao toda.

 

  • 3 semanas depois ...
  • Membros Pro
Postado

Caro colega uma pergunta boba a sua tabela tem muitos registros? se sim existe índices nos campos que mais usado em join e em pesquisas?

Sérgio Guedes

LSI Sistemas

Postado (editado)

sim todas indexadas, tabela master com 21 mil registros.ja resolvir passei para UNIDAC( 10 X mais rapido que firedac ).

nem tudo nativo sao mil maravilhas. o unidac em termos fetch é muito mais poderoso que o firedac.

Editado por gss200610
  • Curtir 2
  • Moderadores
Postado

Monte as Tabelas assim :

CREATE TABLE NOTA (
    iCHAVENOTAFISCAL     BIGINT NOT NULL,
    iSERIE           	 INTEGER NOT NULL,
    iNNOTA               BIGINT NOT NULL,
    iCODIGODOCLIENTE     BIGINT NOT NULL
);

/******************************************************************************/
/***                              Primary Keys                              ***/
/******************************************************************************/

ALTER TABLE NOTA ADD CONSTRAINT PK_NOTA PRIMARY KEY (iCHAVENOTAFISCAL);

/******************************************************************************/
/***                                Indices                                 ***/
/******************************************************************************/

CREATE INDEX NOTA_IDX1 ON NOTA (iSERIE, iNOTA);

CREATE TABLE NOTA_IT (
    iREGISTRO           BIGINT NOT NULL,
    iCHAVENOTAFISCAL    BIGINT NOT NULL,
    sXPROD              varchar(50),
    sUNIDADE            varchar(10)
);

/******************************************************************************/
/***                              Primary Keys                              ***/
/******************************************************************************/

ALTER TABLE NOTA_IT ADD CONSTRAINT PK_NOTA_IT PRIMARY KEY (iREGISTRO);

/******************************************************************************/
/***                                Indices                                 ***/
/******************************************************************************/
CREATE INDEX NOTA_IT_IDX1 ON NOTA_IT (iCHAVENOTAFISCAL,iREGISTRO);

Obs :

iChavenotafiscal  -> Autoincremento na tabela nota.

iRegistro -> Autoincremento na tabela nota_it.

O select de Nota :

select * from nota order by iserie , inota

O Select de Nota_it :

select * from nota_it order by iChavenotaFiscal , iRegistro

 

 A ligação master detail  será:

    Nota.iChavenotafiscal --> Nota_it.iChavenotafiscal.

 

Estude bastante .. o meu exemplo , pois existente grandes pegadinhas para estudar .

 

 

 

Equipe ACBr Henrique Leonardo
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

Postado

agradeço sua dica. mais isso ja faço, uso firebird a anos, o meu problema não é em logica e sim componente mesmo.

o mesmo teste feito com IBO , UNIDAC se sairam muito melhores que o firedac.

 

  • Moderadores
Postado

ok.  e se fizer  para :

O Select de Nota_it :


select * from nota_it  where iChavenotaFiscal = :iChavenotaFiscal order by iChavenotaFiscal , iRegistro

ainda ficar ruim ?

Equipe ACBr Henrique Leonardo
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Tecnólogo em processamento de dados

E-mail [email protected] - Skype : hleorj

  • 1 mês depois ...
  • 2 anos depois...
  • Membros Pro
Postado
Em 16/02/2016 at 16:40, gss200610 disse:

agradeço sua dica. mais isso ja faço, uso firebird a anos, o meu problema não é em logica e sim componente mesmo.

o mesmo teste feito com IBO , UNIDAC se sairam muito melhores que o firedac.

 

Oi amigo,

Qual versão do Unidac você está utilizando. Estou com o mesmo problema.

Grato

Rodrigo Cardilo

Card System Info

[email protected]

  • Este tópico foi criado há 2068 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.