Fórum Ajuda com query. #60989

11/02/2010

0

Boa tarde a todos, estou com um problema no qual não consigo achar solução, sem mudanças drásticas...

Vamos lá,

tenho a seguinte Tabela

CREATE TABLE CUSTOMER (
ID BIGINT NOT NULL,
NAME VARCHAR(256) CHARACTER SET NONE COLLATE NONE,
DOCUMENT_TYPE INTEGER,
DOCUMENT_NUMBER VARCHAR(100) CHARACTER SET NONE COLLATE NONE,
DISPATCHER VARCHAR(256) CHARACTER SET NONE COLLATE NONE,
DOCUMENT_STATE CHAR(2) CHARACTER SET NONE COLLATE NONE);


ALTER TABLE CUSTOMER ADD CONSTRAINT PK_CUSTOMER PRIMARY KEY (ID);


CREATE INDEX IDX_CUSTOMER_ID ON CUSTOMER(ID);;


com exatamente 4342 registro (Teoricamente muito pouco)

Porém qualquer simples consulta que eu faça ao banco utilizando a SQL a seguir

SELECT * FROM customer WHERE name = ´guilherme´;

Leva no mínimo 78ms até 94ms para executar.

Começei a realizar estes testes porque esta achando muito lenta essa outra SQL

SELECT COUNT(id) FROM customer WHERE ((UPPER(udf_CollateBr(name)) like UPPER(udf_CollateBr(´¬gu¬´ ))))

Que Leva entre 95ms até 108ms para executar.

Alguem poderia tentar me ajuda?

Muito Obrigado a Todos.

Att,
Guilherme.


Psyke

Psyke

Responder

Posts

29/03/2010

Robson Catunda

psyke,

Primeiramente, vc não precisa criar um índice para um campo que já é uma chave primary key. A primary key já é um índice. Logo,  "CREATE INDEX IDX_CUSTOMER_ID ON CUSTOMER(ID)" não é necessário.

Quanto à velocidade, vc deve criar um índice com o campo NAME.

Outra coisa, se o banco já vem sendo usado ou testado há algum tempo, quer dizer, já teve muita inclusão e exclusão de registros, é bom vc fazer um backup e restore com o gbak. Isso elimina o lixo do banco e reorganiza ou atualiza os índices.
Responder

Gostei + 0

29/03/2010

Robson Catunda

ah..  um lembrete pra completar a resposta:

alguns comandos como UPPER(NAME) , %NAME , %NAME% e CONTAINING NAME, ignoram os índices existentes utilizando apenas o plano natural e ficando mais lentas as consultas.
Responder

Gostei + 0

04/07/2010

Carlos Mazzi

Resolvido ?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar