[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