Fórum mudar o plan do ib e ... #39077
30/09/2003
0
1 - como faco para mudar o plan (prepare) do ib
para usar outros indices para acelerar as consultas
2 - utilizo o ibx com ib.Em algumas consultas que tenho que ler
a ibquery para colocar os dados em treeview ou usar uma view com
ibquery para mostrar os dados em dbgrids fica lento
porque ?
uso delphi 6 com ib 6.0.2 e tem muitas tabelas relacionadas
ex: pedido ligado a itens ,pedido ligado a cliente
pedido ligado a medico,pedido ligado a convenio,pedido ligado a vendedor
etc...
3 - como usar o union all com varias tabelas ?
agradeco aos colegas antecipadamente
em particular ao a farias
para usar outros indices para acelerar as consultas
2 - utilizo o ibx com ib.Em algumas consultas que tenho que ler
a ibquery para colocar os dados em treeview ou usar uma view com
ibquery para mostrar os dados em dbgrids fica lento
porque ?
uso delphi 6 com ib 6.0.2 e tem muitas tabelas relacionadas
ex: pedido ligado a itens ,pedido ligado a cliente
pedido ligado a medico,pedido ligado a convenio,pedido ligado a vendedor
etc...
3 - como usar o union all com varias tabelas ?
agradeco aos colegas antecipadamente
em particular ao a farias
Helder Andr
Curtir tópico
+ 0
Responder
Posts
30/09/2003
Afarias
1 - veja o help do comando SELECT no Interbase SQL Help que é instalado com o Interbase. Ex::
SELECT {...} WHERE {...} PLAN
a cláusula PLAN deve vir no final do SQL (mas antes do ORDER BY)
Baixe tb o IBPlanalyzer que além de ajudar a analisar e otimizar suas querys (e plans) possui um help sobre entendimento e otimização de PLANs.
2 - Isso depende. O motivo da lentidão pode ser vários -- em geral, siga as seguintes dicas::
-- NUNCA use tables (IBTable no seu caso)
-- procure usar sempre WHERE nos selects para trazer poucos registros
-- se vai apenas ler os dados em um loop contínuo (while not EOF ...) então, configure a propriedade IBQuery.Unidirecional para TRUE.
-- leia o artigo::
http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=126
3 -
SELECT CODIGO, NOME FROM TABELA1
UNION ALL
SELECT CODIGO, NOME FROM TABELA2
UNION ALL
SELECT CODIGO, NOME FROM TABELA3
algumas vezes será necessário usar CAST para tornar as colunas do mesmo tipo (compatível), ex::
SELECT CAST(CODIGO as INTEGER), CAST(NOME as VARCHAR(50)) FROM TABELA1
UNION ALL
SELECT CAST(CODIGO as INTEGER), CAST(NOME as VARCHAR(50)) FROM TABELA2
UNION ALL
SELECT CAST(CODIGO as INTEGER), CAST(NOME as VARCHAR(50)) TABELA3
Beleza?? :D
T+
SELECT {...} WHERE {...} PLAN
a cláusula PLAN deve vir no final do SQL (mas antes do ORDER BY)
Baixe tb o IBPlanalyzer que além de ajudar a analisar e otimizar suas querys (e plans) possui um help sobre entendimento e otimização de PLANs.
2 - Isso depende. O motivo da lentidão pode ser vários -- em geral, siga as seguintes dicas::
-- NUNCA use tables (IBTable no seu caso)
-- procure usar sempre WHERE nos selects para trazer poucos registros
-- se vai apenas ler os dados em um loop contínuo (while not EOF ...) então, configure a propriedade IBQuery.Unidirecional para TRUE.
-- leia o artigo::
http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=126
3 -
SELECT CODIGO, NOME FROM TABELA1
UNION ALL
SELECT CODIGO, NOME FROM TABELA2
UNION ALL
SELECT CODIGO, NOME FROM TABELA3
algumas vezes será necessário usar CAST para tornar as colunas do mesmo tipo (compatível), ex::
SELECT CAST(CODIGO as INTEGER), CAST(NOME as VARCHAR(50)) FROM TABELA1
UNION ALL
SELECT CAST(CODIGO as INTEGER), CAST(NOME as VARCHAR(50)) FROM TABELA2
UNION ALL
SELECT CAST(CODIGO as INTEGER), CAST(NOME as VARCHAR(50)) TABELA3
Beleza?? :D
T+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)