[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