Mysql lento em Select no Delphi
18/11/2005
0
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!!! :(
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
Curtir tópico
+ 0
Responder
Posts
12/12/2005
Sabado
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));
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));
Responder
14/12/2005
Wiltonfenix
Veja se desta forma fica mais rápido:
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.
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.
Responder
Clique aqui para fazer login e interagir na Comunidade :)