[firebase-br] Excesso de varredura em tabelas

Marcelo Moreira marcelomoreira.souza em gmail.com
Seg Nov 29 14:06:59 -03 2010


Cantu,

No caso estou executando esta SP, dai tendo as mensagens que eu citei:
De uma olhada.

CREATE OR ALTER PROCEDURE PORT_RESERVE (
    port_number integer)
returns (
    send_list_id numeric(18,0),
    mobile_number char(10),
    message_alpha varchar(160))
as
begin
  select first 1 SEND_LIST_ID, MOBILE_NUMBER, MESSAGE_ALPHA from
  (
      /* PROCURAR PRIORIDADE 1 */
      select
        first 1
        sl.send_list_id,
        sl.mobile_number,
        sl.message_alpha
      from
        send_list sl
      where
        (sl.port_number = :port_number) and
        (sl.priority_id = 1)

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

  suspend;
end

No caso na tabela SEND_LIST eu tenho apenas:

ALTER TABLE SEND_LIST ADD CONSTRAINT PK_SEND_LIST PRIMARY KEY
(SEND_LIST_ID);

Nos campos PORT_NUMBER posso ter valores de 1 a 180 e PRIORITY_ID tenho
valores 1 ou 2

Esta tabela esta o tempo todo sofrendo update's, insert's e delet's

No caso ai seria indicado eu adicionar indices em quais campos?

Obrigado pela atenção!
Abs.



Mais detalhes sobre a lista de discussão lista