catana 0 Denunciar post Postado Julho 29, 2009 Olá! Tenho uma consulta para fazer que esta demorando muito na resposta já tentei de várias maneiras e nao estou conseguindo resolver o problema. Tenho uma tabela principal ex: Pessoas id nome e uma tabela secundaria: filhos id id_pessoa nome_filho preciso fazer uma pesquisa que possa filtrar tanto pela tabela pessoa como pela tabela filhos, no pior caso preciso que todos os itens da tabela pessoas apareçam, mesmo estas nao tendo filhos, para isto tentei: select * from pessoas left join filhos on id_pessoa = pessoas.id beleza funciona, mas funciona apenas com poucos dados, como no caso tenho 7000 registros na tabela pessoas e 20.000 na tabela filhos o mysql trava de uma maneira que tenho que reiniciar a maquina tentei assim tbm: select * from pessoas where id IN (select id_pessoa from filhos) mas tbm nao resolveu o problema, alguem tem alguma ideia do que posso fazer para melhorar isto ? Tenho na verdade uma base de dados com mais tabelas secundarias, e em alguns testes até com uma tabela funciona qdo acrecendo outras da o problema e trava a maquina. Se alguem puder ajudar agradeço Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Julho 29, 2009 catana, seja bem vindo ao Fórum iMasters, conheça nossas regras: Regras do Fórum 1º passo é tirar o * para trazer todos os campos, defina quais campos você quer trazer na sua consulta. 2º Tente utiliza o Inner Join, ele irá trazer somente os registros que possuem mesmo a referência nas duas tabelas. 3º Veja se esta tabela possui indice e utilize ele no Order By. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites