Ir para conteúdo
Fórum Script Brasil
  • 0

Melhorar consulta


Rodrigo Bizz

Pergunta

Pessoal, preciso melhorar um select que faz o seguinte:

Ele mostra a quantidade de questões cadastradas no site da seguinte forma:

Atualização de Questões:

03/12 - Noções de Infor... (23 questões)

19/10 - Administração G... (5 questões)

12/07 - Redes de Comput... (16 questões)

12/07 - Direito Previde... (7 questões)

12/07 - Administração F... (4 questões)

12/07 - Segurança da In... (11 questões)

12/07 - Direito Interna... (7 questões)

12/07 - Administração G... (2 questões)

12/07 - Arquitetura de ... (70 questões)

12/07 - Direito Interna... (39 questões)

12/07 - Sistemas Operac... (22 questões)

12/07 - Direitos Humano... (99 questões)

12/07 - Administração P... (3 questões)

pegar a última questão e verificar a disciplina dela...

pegar a próxima questão e verificar a disciplina dela... se for igual junta(soma/conta) com a primeira...

e vai indo até dar 13 disciplinas.

O que ocorre é que esta verificando todas as questões.(nesse primeiro select abaixo)

Na hora que der 13 disciplinas diferentes tem que parar.

Resumindo: tenho que pegar as últimas questões incluidas para 13 disciplinas.

Como estava inicialmente:

SELECT count(questoes.id_questao) as totalQuestao, disciplinas.nome as nomeDisciplina, disciplinas.id_disciplina as idDisciplina, questoes.data_cadastro as dataCadastroQuestao

FROM disciplinas

INNER JOIN questoes_disciplina questoes_disciplina ON questoes_disciplina.id_disciplina = disciplinas.id_disciplina

INNER JOIN questoes ON questoes.id_questao = questoes_disciplina.id_questao

GROUP BY disciplinas.id_disciplina, DATE(questoes.data_cadastro)

ORDER BY DATE(questoes.data_cadastro) desc

LIMIT 13;

tempo: 1,67 segundos

Como ficou a melhoria(gambiarra):

SELECT count(questoes.id_questao) as totalQuestao,

disciplinas.nome as nomeDisciplina,

disciplinas.id_disciplina as idDisciplina,

questoes.data_cadastro as dataCadastroQuestao,

questoes_disciplina.id_questao as asd

FROM disciplinas

INNER JOIN questoes_disciplina questoes_disciplina ON questoes_disciplina.id_disciplina = disciplinas.id_disciplina

INNER JOIN questoes ON questoes.id_questao = questoes_disciplina.id_questao

WHERE questoes_disciplina.id_questao <= (SELECT MAX(questoes_disciplina.id_questao) FROM questoes_disciplina) and

questoes_disciplina.id_questao >= ((SELECT MAX(questoes_disciplina.id_questao) FROM questoes_disciplina) - 5000)

GROUP BY disciplinas.id_disciplina, DATE(questoes.data_cadastro)

ORDER BY DATE(questoes.data_cadastro) DESC

LIMIT 13;

tempo: 0,047 segundos

Preciso melhorar definitivamente esse select, fazer um indice ou sei la oque. alguém poderia me ajudar?

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...