mudar o plan do ib e ...

Firebird

30/09/2003

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


Helder Andr

Helder Andr

Curtidas 0

Respostas

Afarias

Afarias

30/09/2003

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+


GOSTEI 0
POSTAR