Jump to content


Photo

Consulta A Tabela Muito Lenta, Através De Combobox


  • Faça o login para participar
10 replies to this topic

#1 Junior Simões

Junior Simões

    Turista

  • Usuários
  • 33 posts
  • Sexo:Não informado

Posted 09/10/2007, 09:07

Galera eu estou com um problema , gostaria de ver se vocês podem me ajudar com isto.

Tenho um banco de dados de cadastro; no ato do cadastro a consulta feita em 5 tabeles diferentes a partir de combobox, esta tabela estão ligadas através de chave primaria e chave estrangeira, o problema é que a pagina se tornou tão lenta a ponto de não carregar, eu gostaria de saber se tem alguma forma de consertar isto, alguem pode me dar um apoio..

> tipo de tabela utilizada : Inoodb

- > Index_type em todos campos -> BIREE

Não tem indices setados no campos utilizados pela clausula where.

Segue a forma que fiz a tabela:


[codebox]create table cadastro (
idCadastro int(11) not null auto_increment,
sentido char(32),
data date,
pracaPedagio char(32),
tipodeVeiculo char(32),
arrecadador char(30),
horario time,
Origem INT NOT NULL,
Destino INT NOT NULL,
produtos INT NOT NULL,
transportadora INT NOT NULL,
MotivoViajem char(40) null,
eixo char(32) null,
frequenciaUtilizacao char(32) null,
avaliacaoVianorte char(32) null,
postoUtilizado INT NOT NULL,
tempodeViajem char(32) null,
primary key (idCadastro, Origem, Destino, produtos, transportadora, postoUtilizado),
FOREIGN KEY (Origem) REFERENCES cidade (idcidades) ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY (Destino) REFERENCES cidade (idcidades) ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY (produtos) REFERENCES produtos (idProdutos) ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY (postoUtilizado) REFERENCES postoservico (idPosto) ON DELETE NO ACTION ON UPDATE NO ACTION ,
FOREIGN KEY (transportadora) REFERENCES transportadora (idTransportadora) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB;[/codebox]

maneira que é feita 1 dos 5 select:
[codebox]$sql = "SELECT * FROM produtos order by nomeProduto";[/codebox]



-> tipo de tabela utilizada : Inoodb

- > Index_type em todos campos -> BIREE

Não tem indices setados no campos utilizados pela clausula where.

Segue a forma que fiz a tabela:

CODE
create table cadastro (
idCadastro int(11) not null auto_increment,
sentido char(32),
data date,
pracaPedagio char(32),
tipodeVeiculo char(32),
arrecadador char(30),
horario time,
Origem INT NOT NULL,
Destino INT NOT NULL,
produtos INT NOT NULL,
transportadora INT NOT NULL,
MotivoViajem char(40) null,
eixo char(32) null,
frequenciaUtilizacao char(32) null,
avaliacaoVianorte char(32) null,
postoUtilizado INT NOT NULL,
tempodeViajem char(32) null,
primary key (idCadastro, Origem, Destino, produtos, transportadora, postoUtilizado),
FOREIGN KEY (Origem) REFERENCES cidade (idcidades) ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY (Destino) REFERENCES cidade (idcidades) ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY (produtos) REFERENCES produtos (idProdutos) ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY (postoUtilizado) REFERENCES postoservico (idPosto) ON DELETE NO ACTION ON UPDATE NO ACTION ,
FOREIGN KEY (transportadora) REFERENCES transportadora (idTransportadora) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB;


maneira que é feita o select:

CODE
$sql = "SELECT * FROM produtos order by nomeProduto";


São 5 combobox com select em tabelas . está muito lento a pagina não chega nem a abrir

a a necessidade de criar index ? se houver como sera feito ?

muito obrigado pela atenção:

#2 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 09/10/2007, 09:22

Estranho... me diz uma coisa, quantos registros você tem em cada tabela?
São cinco selects para cada combo ou é um select para cada um dos conco combos?
[] Rafael :boxing:

#3 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 09/10/2007, 09:32

Poderia criar um índice sim, faça um teste com:

CREATE INDEX nome_produto ON produtos (nomeProduto(1));

Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#4 Junior Simões

Junior Simões

    Turista

  • Usuários
  • 33 posts
  • Sexo:Não informado

Posted 09/10/2007, 09:34

na tabela cidade são 5.000 registros;
na produtos cerca de 500 registro,
nas outras cerca de 100 produtos , a consulta ficou tão lenta que a pagina de cadastro nem abre,
oque eu andei lendo foi sobre index e sobre indices, para fazer a consulta ficar mais rapida, mas não sei como fazer.

ahh é um select para cada combo referente a tabela especifica.

Edição feita por: Junior Simões, 09/10/2007, 09:35.


#5 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 09/10/2007, 10:01

Cara... mesmo que você consiga otimizar sua consulta... o seu problema é o tempo pra montar cinco mil linhas na tela... é pra demorar mesmo.
O SQL se vira bem!
Eu fiz um teste na minha base (é Postgres, não MySQL... mas não quer dizer)... trouxe mais de 8 mil registros em menos de meio segundo.
O problema é que o seu usuário não precisa de cinco mil cidades sendo que ele só vai usar uma. Concorda?
[] Rafael :boxing:

#6 Junior Simões

Junior Simões

    Turista

  • Usuários
  • 33 posts
  • Sexo:Não informado

Posted 09/10/2007, 11:19

Amigo eu não consigo criar os indices da um apoio ai para criação no ato da criação desta tabela

[codebox]create table cadastro (
idCadastro int(11) not null auto_increment,
sentido char(32),
data date,
pracaPedagio char(32),
tipodeVeiculo char(32),
arrecadador char(30),
horario time,
Origem INT NOT NULL,
Destino INT NOT NULL,
produtos INT NOT NULL,
transportadora INT NOT NULL,
MotivoViajem char(40) null,
eixo char(32) null,
frequenciaUtilizacao char(32) null,
avaliacaoVianorte char(32) null,
postoUtilizado INT NOT NULL,
tempodeViajem char(32) null,
primary key (idCadastro, Origem, Destino, produtos, transportadora, postoUtilizado),
FOREIGN KEY (Origem) REFERENCES cidade (idcidades) ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY (Destino) REFERENCES cidade (idcidades) ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY (produtos) REFERENCES produtos (idProdutos) ON DELETE NO ACTION ON UPDATE NO ACTION,
FOREIGN KEY (postoUtilizado) REFERENCES postoservico (idPosto) ON DELETE NO ACTION ON UPDATE NO ACTION ,
FOREIGN KEY (transportadora) REFERENCES transportadora (idTransportadora) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB;[/codebox]

Edição feita por: Junior Simões, 09/10/2007, 11:23.


#7 Junior Simões

Junior Simões

    Turista

  • Usuários
  • 33 posts
  • Sexo:Não informado

Posted 18/10/2007, 11:13

Amigo eu não consigo criar os indices da um apoio ai para criação no ato da criação desta tabela

create table cadastro (idCadastro int(11) not null auto_increment,sentido char(32),data date,pracaPedagio char(32),tipodeVeiculo char(32),arrecadador char(30),horario time,Origem INT NOT NULL,Destino INT NOT NULL,produtos INT NOT NULL,transportadora INT NOT NULL,MotivoViajem char(40) null,eixo char(32) null,frequenciaUtilizacao char(32) null,avaliacaoVianorte char(32) null,postoUtilizado INT NOT NULL,tempodeViajem char(32) null,primary key (idCadastro, Origem, Destino, produtos, transportadora, postoUtilizado),FOREIGN KEY (Origem) REFERENCES cidade (idcidades) ON DELETE NO ACTION ON UPDATE NO ACTION,FOREIGN KEY (Destino) REFERENCES cidade (idcidades) ON DELETE NO ACTION ON UPDATE NO ACTION,FOREIGN KEY (produtos) REFERENCES produtos (idProdutos) ON DELETE NO ACTION ON UPDATE NO ACTION,FOREIGN KEY (postoUtilizado) REFERENCES postoservico (idPosto) ON DELETE NO ACTION ON UPDATE NO ACTION ,FOREIGN KEY (transportadora) REFERENCES transportadora (idTransportadora) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB;



consegui vlw..

index( nome dos campos ) ;

#8 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 22/09/2017, 10:41

Compro Viagra En Valencia online pharmacy Buying Viagra Over Night Delivery
Zithromax Suspension Dosing Change Dose Propecia Lasix Buy No Prescription
Prix Levitra 10 Mg <a href=http://cialtobuy.com>cheap cialis</a> Buy Spironolactone
Acheter Du Kamagra Quebec cialis online Viagra Kaufen Bei Ebay
Achat Lioresal Keflex Talwin And Clotrimazole
Ere To Get Cialis In Perth <a href=http://cialtobuy.com>buy cialis</a> sale isotretinoin roacutan website cheapeast
Bayer cialis online Cialis Samples Overnight
Cheap Doxycycline Uk Prednisone From Mexico
Propecia Works Men <a href=http://cialtobuy.com>cialis online</a> Cialis Free Samples

#9 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 08/10/2017, 00:04

Trazodone Buy Online In United States Lexapro New Zealand Gel Kamagra Francia mail order levitra Buy Prescription Lasix 40 Mg Online Kamagra Uk Pay With Paypal Composition Viagra
Kamagra Gold Review cheap cialis Viagra Prezzi In Farmacia Nolvadex Men Achat De Kamagra
Prix Du Viagra 25mg Order Fluoxetine Online No Prescription Rualis 20 levitra 40 mg best price Keflex Cures Giardia Can You Buy Atarax Over The Counter Discount Nonprescription Tadalis Sx

#10 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 26/10/2017, 00:19

Acheter Du Cialis En France Controindicazioni Viagra generic levitra 20mg Amoxicilina Bacterial Infections Levitra Sovradosaggio
Lasix Drug Test viagra Low Price Viagra Pills For Sale Propecia Reproduccion buy accutane v-drugstore

#11 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 05/11/2017, 22:09

Viagra Alternativen Viapro viagra prescription Get Legally Amoxicilina Website Overnight Shipping Amex Store Amoxil Etre Cialis Per Durata
Cephalexin Chlamydia Propecia Barato 1 Mg Disfunzione Erettile viagra Keflex For Herpes Cytotec Vente Buy Generic Tadalafil Online




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq