Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

KUROL3

Logica e Indice

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.