Estou tentando melhorar o desempenho de uma consulta, ela possui vários inner join, como ela está muito lenta, eu resolvi fazer inner join de outra select trazendo só os campos necessários da outra tabela, mas pelo que vejo, piorou ainda mais o desempenho, isso no oracle seria beleza, mas no mysql não… Alguma explicação para isso???
Não conheço muito mysql, mas sei que tem os tipos de tabelas, e isso deve influir no desempenho.
No seu caso, acho que você deveria o tipo InnoDB para JOIN.
Referente a tipos de tabelas, conforme o Alberes falou, as tabelas do tipo MyISAM costuma ser mais rapido do que a INNODB, porem acredito que não seja este o seu problema.
O que você pode verificar são os indices de suas tabelas, e analisar o plano de consulta que o MySQL está montando (Comando EXPLAIN)
Ex. EXPLAIN COMANDO SQL.
Outro detalhe que da para melhorar no MySQL são as configurações do banco de dados, como buffer de ordenação, etc etc… mas, a grande maioria dos problemas é nos indices, e na montagem da query.
Por isto seria interessante você enviar o seu SQL, juntamente com o resultado do plano de consulta e se possivel alguns dados das tabelas envolvidas, como quantidade de registros, indices, etc etc.
Somente com estes dados é possivel levantar os reais problemas da consulta
Att
Olha meu caro, vc deve estar colocando tabelas mais restritivas primeiro e as menos restritivas por último, uma das formas de otimizar as consultas é colocar das menos restritivas para as mais restritivas, pois o SGBD lê do fim para o início.
Faz uma árvore de otimização (Através da Algebra Relacional) pra tirar a melhor consulta, olha este link e vê: http://ctgalina.googlepages.com/ProcessamentodeConsultas.ppt