[firebase-br] Excesso de varredura em tabelas

Carlos H. Cantu listas em warmboot.com.br
Seg Nov 29 15:37:33 -03 2010


Experimente criar um índice pelo menos para port_number.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

MM> Cantu,
MM>  
MM> No caso estou executando esta SP, dai tendo as mensagens que eu citei:
MM> De uma olhada.
MM>  
MM> CREATE OR ALTER PROCEDURE PORT_RESERVE (
MM>     port_number integer)
MM> returns (
MM>     send_list_id numeric(18,0),
MM>     mobile_number char(10),
MM>     message_alpha varchar(160))
MM> as
MM> begin
MM>   select first 1 SEND_LIST_ID, MOBILE_NUMBER, MESSAGE_ALPHA from
MM>   (
MM>       /* PROCURAR PRIORIDADE 1 */
MM>       select
MM>         first 1
MM>         sl.send_list_id,
MM>         sl.mobile_number,
MM>         sl.message_alpha
MM>       from
MM>         send_list sl
MM>       where
MM>         (sl.port_number = :port_number) and
MM>         (sl.priority_id = 1)

MM>       union
MM>       /* PROCURAR PRIORIDADE 2 */
MM>       select
MM>         first 1
MM>         sl.send_list_id,
MM>         sl.mobile_number,
MM>         sl.message_alpha
MM>       from
MM>         send_list sl
MM>       where
MM>         (sl.port_number = :port_number) and
MM>         (sl.priority_id = 2)
MM>   )
MM>   order by
MM>         send_list_id
MM>   into
MM>         :send_list_id,
MM>         :mobile_number,
MM>         :message_alpha;

MM>   suspend;
MM> end
MM>  
MM> No caso na tabela SEND_LIST eu tenho apenas:
MM>  
MM> ALTER TABLE SEND_LIST ADD CONSTRAINT PK_SEND_LIST PRIMARY KEY (SEND_LIST_ID);
MM>  
MM> Nos campos PORT_NUMBER posso ter valores de 1 a 180 e PRIORITY_ID tenho valores 1 ou 2
MM>  
MM> Esta tabela esta o tempo todo sofrendo update's, insert's e delet's
MM>  
MM> No caso ai seria indicado eu adicionar indices em quais campos?
MM>  
MM> Obrigado pela atenção!
MM> Abs.





Mais detalhes sobre a lista de discussão lista