Mysql lento em Select no Delphi

MySQL

18/11/2005

Olá!
Estou fazendo um select em várias tabelas ao mesmo tempo sendo que minha primeira tabela possui certa de 30.000 registros as outras duas são menores (possuem menos de 1000 registros cada uma). Acontece que se eu consultar um registro específico o resultado é rápido, mas se eu pedir vários registros (acima de 100) ou todos, o resultado chega a levar 30 segundos ou mais pra chegar... o Desktop chega até a travar por instantes. Estou usando o Mysql 4.1 e o componente ZeosLib para ligar as tabelas com Delphi 7....
Abaixo está o código usado:

Select A.NOCEP, A.DCCEP, A.NMBAIRRO, B.NMCIDADE, C.SGESTADO from CADCEP A, CADCIDADES B, CADESTADOS C where A.CDCIDADE = B.CDCIDADE AND B.CDESTADO = C.CDESTADO

Tem algo errado com meu select ou algum parametro no delphi???

Meus indices primarios são: nocep, cdcidade, cdestado e estou usando o mysql + delphi 7 em um Semprom 2.4 + Placa-Mãe ECS KM400 com 512MB RAM e HD 120GB Particionado...

Por Favor me ajudem!!! :(


Monteirog12

Monteirog12

Curtidas 0

Respostas

Sabado

Sabado

18/11/2005

Tente alterar o seu select, conforme o exemplo abaixo:

Var
Cliente: String;
begin
Cliente:= dblookupcombobox2.text;
datamodule1.query12.Close;
datamodule1.query12.SQL.Clear;
datamodule1.query12.SQL.Text := ´SELECT * FROM orcamento WHERE cliente =:pcliente ORDER BY data desc´;
datamodule1.query12.ParamByName(´pCliente´).AsString := Cliente;
datamodule1.query12.Open;
ShowMessage(´Total de registros encontrados na pesquisa: ´ + IntToStr(datamodule1.query12.RecordCount));


GOSTEI 0
Wiltonfenix

Wiltonfenix

18/11/2005

Veja se desta forma fica mais rápido:

Select A.NOCEP, A.DCCEP, A.NMBAIRRO, B.NMCIDADE, C.SGESTADO From CADCEP A Left Join CADCIDADES B On (A.CDCIDADE = B.CDCIDADE) Left Join CADESTADOS C On (B.CDESTADO = C.CDESTADO)


OBS: Seu select parece estar retornando todos os registros. Se uma consulta for retornar um número muito grande de registros, não importa o SQL, ela será lenta do mesmo jeito.


GOSTEI 0
POSTAR