KUROL3 3 Denunciar post Postado Maio 8, 2012 Olá a todos mais uma vez estou aqui com uma duvida para otimizar um select..... tabela produtos | registros 30000 tabela situacao_1 | registros 30 tabela situacao_2 | registros 25 dentro da tabela situacao_1 e situacao_2 tem um flag "flag_disponivel", eu quero exibir somente os produtos que estejam com o flag_disponivel = 1 estou fazendo a seguinte sintax. SELECT produtos.nome FROM produtos INNER JOIN situacao_1 INNER JOIN situacao_2 ON (situacao_1.id = produtos.id_situacao_1 and flag_disponivel = 1) or (situacao_2.id = produtos.id_situacao_2 and flag_disponivel = 1) os resultados estao saindo perfeitamente so que demoram mais de 20 segundos... tem alguma forma de melhorar???? na tabela produtos esta criado indice para id_situacao_1 e id_situacao_2 aguardo Marco Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Maio 8, 2012 situacao_1.id - index produtos.id_situacao_1 - index flag_disponivel - index situacao_2.id - index produtos.id_situacao_2 - index index composto (flag_disponivel + produtos.id_situacao_1) index composto (flag_disponivel + produtos.id_situacao_1) SELECT produtos.nome FROM produtos , situacao_1 , situacao_2 where ((situacao_1.id = produtos.id_situacao_1 ) or (situacao_2.id = produtos.id_situacao_2 )) and flag_disponivel = 1 Compartilhar este post Link para o post Compartilhar em outros sites
KUROL3 3 Denunciar post Postado Maio 8, 2012 mas como vou criar esse index composto desses campos index composto (flag_disponivel + produtos.id_situacao_1) index composto (flag_disponivel + produtos.id_situacao_1) sendo que o flag_disponivel é da tabela ( situacao_1 e situacao_2 ) e id_situacao_1 e id_situacao_2 da tabela produtos? da pra criar index composto de duas tabelas diferentes? obrigado marco situacao_1.id - index produtos.id_situacao_1 - index flag_disponivel - index situacao_2.id - index produtos.id_situacao_2 - index index composto (flag_disponivel + produtos.id_situacao_1) index composto (flag_disponivel + produtos.id_situacao_1) SELECT produtos.nome FROM produtos , situacao_1 , situacao_2 where ((situacao_1.id = produtos.id_situacao_1 ) or (situacao_2.id = produtos.id_situacao_2 )) and flag_disponivel = 1 Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Maio 9, 2012 posta a estrutura das tabelas Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Maio 9, 2012 Tente... SELECT produtos.nome FROM produtos INNER JOIN situacao_1 ON (situacao_1.id = produtos.id_situacao_1 and flag_disponivel = 1) UNION SELECT produtos.nome FROM produtos INNER JOIN situacao_2 ON (situacao_2.id = produtos.id_situacao_2 and flag_disponivel = 1) Compartilhar este post Link para o post Compartilhar em outros sites