Re: [firebase-br] Índice e operador de menor/maior
Carlos H. Cantu
listas em warmboot.com.br
Sáb Jan 1 12:19:46 -03 2005
Qual a seletividade do índice referente ao campo erro?
[]s
Cantu
http://www.warmboot.com.br
FireBase - http://www.FireBase.com.br
DT> Estou fazendo alguns testes por aqui e cheguei a uma situação curiosa. Criei
DT> uma tabela com a estrutura abaixo:
DT> CREATE TABLE Trunca(
DT> Codigo INTEGER NOT NULL,
DT> Valor1 NUMERIC(18,4) NOT NULL,
DT> Valor2 NUMERIC(18,4) NOT NULL,
DT> Seguro NUMERIC(18,4) NOT NULL,
DT> UDF1 NUMERIC(18,4) COMPUTED(TBTruncDec(Valor1 * Valor2, 4)),
DT> UDF2 COMPUTED(TBTruncDec(Valor1 * Valor2, 4)),
DT> Erro SMALLINT NOT NULL,
DT> CONSTRAINT PK_Trunca PRIMARY KEY(Codigo));
DT> CREATE INDEX IDX_Trunca_Erro ON Trunca(Erro);
DT> Via programa feito em Delphi, inseri alguns milhões de registros nesta
DT> tabela (6.198.200). Rodei o SELECT abaixo com vários filtros diferentes e
DT> notei todas as vezes em que os operadores < e > foram usados com o campo
DT> "Erro" o tempo de resposta foi demasiadamente longo, mesmo usando índice.
DT> SELECT * FROM Trunca
DT> ---------- Filtrando pelo campo Erro, o qual tem índice
DT> secundário -----------
Filtro: Erro >> 0
DT> Linhas retornadas: nenhuma
DT> Tempo: mais de 2 minutos
DT> PLAN (TRUNCA INDEX (IDX_TRUNCA_ERRO))
DT> Filtro: Erro < 0
DT> Linhas retornadas: nenhuma
DT> Tempo: quase 2 minutos
DT> PLAN (TRUNCA INDEX (IDX_TRUNCA_ERRO))
DT> Filtro: Erro = 1
DT> Linhas retornadas: nenhuma
DT> Tempo: instantâneo
DT> PLAN (TRUNCA INDEX (IDX_TRUNCA_ERRO))
DT> ---------- Filtrando pelo campo Codigo, que é chave-primária ----------
Filtro: Codigo >> 7000000
DT> Linhas retornadas: nenhuma
DT> Tempo: instantâneo
DT> PLAN (TRUNCA INDEX (PK_TRUNCA))
DT> Filtro: Codigo < 0
DT> Linhas retornadas: nenhuma
DT> Tempo: instantâneo
DT> PLAN (TRUNCA INDEX (PK_TRUNCA))
DT> Filtro: Codigo = 100
DT> Linhas retornadas: uma
DT> Tempo: instantâneo
DT> PLAN (TRUNCA INDEX (PK_TRUNCA))
DT> Dúvida:
DT> Porque os operadores relacionais < e > são tão lentos quando está sendo
DT> usado um índice secundário? Seria um problema no otimizador do Firebird?
DT> Alguém sabe alguma coisa sobre isto?
DT> Atenciosamente.
DT> Daniel P. Guimarães
DT> Tecnobyte informática
DT> ______________________________________________
DT> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
DT> Para editar sua configuração na lista, use o endereço
DT> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Mais detalhes sobre a lista de discussão lista