Jump to content


Photo

Relacionando 4 Tabelas Sem Inner Join


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

#1 redstyle

redstyle

    Expert

  • Usuários
  • 540 posts
  • Sexo:Masculino

Posted 18/10/2005, 16:32

Olá pessoal,
Estou com 4 tabelas (uf, cidade, bairro, endereco) onde tem informações relacionadas a cada cep com rua, cidade e tudo mais.

Estou utilizando essa SQL pra pegar a sigla do estado, o nome da cidade, e o nome do bairro e o endereço.

SELECT uf.uf_sigla, cidade.cidade_descricao, bairro.bairro_descricao, endereco.endereco_logradouro FROM uf, cidade, bairro, endereco WHERE endereco.endereco_cep = '14091520' AND endereco.bairro_codigo = bairro.bairro_codigo AND endereco.cidade_codigo = cidade.cidade_codigo AND endereco.uf_codigo = uf.uf_codigo;

Mas deve ter alguma coisa errada porque o mysql demora muito e a maquina aqui fica super lenta.

Como melhorar essa consulta pra baixar o tempo de resposta do mysql?

Segue anexa a imagem das tabelas no DBDesign.

Attached Files

  • Attached File  bd.gif   31.89KB   5 downloads

Edição feita por: redstyle, 18/10/2005, 16:34.

Conheça meu blog para Aprender Laravel (Framework PHP)


#2 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 18/10/2005, 16:37

As tabelas estão indexadas adequadamente?
A maior tabela desses ai tem aproximadamente quantos milhões de registros?

======

ops... vi a modelagem agora, vou dar uma olhada.

Edição feita por: Prog, 18/10/2005, 16:37.

------
Mero mortal!

#3 redstyle

redstyle

    Expert

  • Usuários
  • 540 posts
  • Sexo:Masculino

Posted 18/10/2005, 16:42

A maior tabela é a de endereços com 692.000 registros

Conheça meu blog para Aprender Laravel (Framework PHP)


#4 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 18/10/2005, 17:02

Red... eu não entendi uma coisa na sua modelagem.

Você tem campos... por exemplo:
id_uf e uf_codigo
id_cidade e cidade_codigo
id_bairro e bairro_codigo
id_endereco e endereco_codigo


Isto parece esta redundante, além do fato dos seus relacionamentos estarem sendo feitos com os campos que não estão indexados. Exemplo:
Vc relaciona o campo uf_codigo (na tabela uf) com o campo uf_codigo (na tabela cidade)... sendo que uf_codigo não esta indexado.
Posso estar lendo sua modelagem errada, caso eu esteja enganado... me diz como esta funcionando.

Um exemplo para o seu modelo:

Posted Image
------
Mero mortal!

#5 redstyle

redstyle

    Expert

  • Usuários
  • 540 posts
  • Sexo:Masculino

Posted 18/10/2005, 17:16

Humm...realmente adicionei os id pra ter maior controle. Mas não precisava disso. Vou tirar já que não irei usar mesmo.

Mas no caso da indexação eu coloquei lá cidade_FKIndex1.

Eu sei que tem algum jeito de pegar todas as informações que quero em um query só (tá difícil mais vou tentando aqui). No inicio iria pegar os codigos de tudo na tabela endereco e depois dar sub querys nas outras tabelas, mas parece ser uma gambi :)

Vou tentato aqui, caso tiver mais alguma informação que possa me ajudar, manda ver (y)

[]'s

Conheça meu blog para Aprender Laravel (Framework PHP)


#6 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 18/10/2005, 17:19

A query de seleção que você montou esta correta, o problema da demora é por conta da indexação das tabelas.

Este modelo que eu apresentei não é mais nem menos correto. É apenas "+ uma maneira".

Edição feita por: Prog, 18/10/2005, 17:22.

------
Mero mortal!

#7 redstyle

redstyle

    Expert

  • Usuários
  • 540 posts
  • Sexo:Masculino

Posted 18/10/2005, 19:30

Neste caso usando os index teria que mudar o sql pra usar os index.
Neste caso como ficaria?

SELECT uf.uf_sigla, cidade.cidade_descricao, bairro.bairro_descricao, endereco.endereco_logradouro FROM uf, cidade, bairro, endereco USE INDEX (cidade_FKIndex1.....???) WHERE endereco.endereco_cep = '14091520' AND endereco.bairro_codigo = bairro.bairro_codigo AND endereco.cidade_codigo = cidade.cidade_codigo AND endereco.uf_codigo = uf.uf_codigo;

[]'s

Conheça meu blog para Aprender Laravel (Framework PHP)


#8 redstyle

redstyle

    Expert

  • Usuários
  • 540 posts
  • Sexo:Masculino

Posted 19/10/2005, 08:41

E ae Prog,
Cara você me abriu os olhos pra esse esquema de índice.
Como te disse a consulta tava demorando demais (nem chegava a terminar) então você me falou dos índices.

Pesquisei e achei um artigo que falou sobre isso (no vivaolinux - Artigo Aqui)

Criei um indice na tabela endereco no campo endereco_cep e depois mudei minha consulta pra:

SELECT uf.uf_sigla, cidade.cidade_descricao, bairro.bairro_descricao, endereco.endereco_logradouro FROM uf, cidade, bairro, endereco USE INDEX (endereco_cep) WHERE endereco.endereco_cep = '14091520' AND endereco.bairro_codigo = bairro.bairro_codigo AND endereco.cidade_codigo = cidade.cidade_codigo AND endereco.uf_codigo = uf.uf_codigo;

E achou muito rápido....Prog fico te devendo essa :D

Olha a imagem abaixo pra comprovar hehehehehehee..

Yaaaahoooooooooooooooooooooooooo ahuahauhauahuah!!!!!

Falowz ae!!!

Attached Files


Edição feita por: redstyle, 19/10/2005, 08:42.

Conheça meu blog para Aprender Laravel (Framework PHP)


#9 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 15/09/2017, 07:05

Finasteride Free Shipping generic cialis Viagra Medicament
Cialis Ogni Due Giorni Comprar Cialis En Mendoza Viagra With Ot Prisetion
Order Now Fluoxetine cialis Baclofene Amm 2012

#10 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 04/10/2017, 23:35

Ciprofloxacin Crystalluria online pharmacy Aspirin Davkovanie Clomid
Over The Counter Diabetic Medicine Buy Tetracycline Antibiotics Costo Priligy Originale viagra Buy Now Doxycycline
Doxycycline For Dogs Cost viagra online prescription Cuanto Cuesta Cialis Isotretinoin 10mg Mail Order On Line Viagra Das Erste Mal Nehmen
Proscar Orkut Propecia Amoxicillin Coverage Pyridium Order Now In Internet generic viagra Viagra Overnight Best Price Lasix Spain Cialis 20 Mg Durata

#11 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 05/10/2017, 07:36

Buy Generic Levitra Overnight Methocarbamol Over The Counter Acheter Xenical Suisse viagra online Kamagra Gold Side Effects Amoxicilina Panklav Next Day. Amoxicilina Penamox On Sale
Lioresal Pas Cher En France Buy Clomid Via Mail cialis Sildenafil Citrate Sales In Canada Alli Diet Pills Sale Canada

#12 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 15/10/2017, 06:33

Low Price Viagra Cephalexin For generic cialis Reglan No Rx Canada
Syphilis And Amoxicillin Viagra Tabletten Discount Nexium viagra Cephalexin Or Cephalexin Online No Script Pharmacy Prezzo Cialis 10 Mg

#13 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 31/10/2017, 20:56

Levitra Interazioni Vente Baclofen Cialis 20mg De sildenafil tadalafil and vardenafil Buy Levitra Safely From Canada
Viagra Punti Vendita Buy Zithromax 1.0 Gm Cialis Viagra Generique buy vardenafil 40 mg online Famvir Isotretinoin Worldwide
Uti Keflex 2000mg Precio Cialis 20 Mg En Farmacia levitra prezzi Bid

#14 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 21/11/2017, 21:34

Acheter Du Viagra Rapidement Levitra Da Sciogliere In Bocca Viagra Effetti Sessuali viagra online prescription Online Clomid No Prescription Propecia Que Necesitan Receta
Cialis Generico En Guanajuato Priligy At Boots Sale Generic Pyridium Tablets Real Low Price levitra 10 mg Amoxicillin And Dacon Solution Generic Keflex Cialis Generika Kaufen
Prix Cialis 10mg En Pharmacie Online Pharmacy With Overnight Delivery Cephalexin And Strep Throat online pharmacy Propecia Ataxia Overnight Delivery Buy Levitra Online Viagra 50mg Preis




1 user(s) are reading this topic

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

IPB Skin By Virteq