Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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
posta a estrutura das tabelas
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)
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