Ir para conteúdo
Adriano Barbosa

Query lenta, como otimizar

Recommended Posts

Boa tarde,

Preciso de uma ajuda para fazer uma otimização na minha busca, tenho o seguinte panorama:

São 80mil registros, onde eu preciso fazer uma busca nas seguintes colunas "nomeDoProduto, marca, descricao e loja" 

O problema é que minha busca está demorando demaisssss... não sei como resolver isso.

Segue como estou fazendo, se alguém puder me dar uma ajuda, fico grato.

 

Citar

BUSCA COM UMA PALAVRA: "VESTIDO"

SELECT idProduto, produto, preco FROM produtos WHERE (produto LIKE '%vestido%' OR marca LIKE '%vestido%' OR descricao LIKE '%vestido%' OR loja LIKE '%vestido%') AND disponivel = 1


BUSCA COM DUAS PALAVRAS: "VESTIDO DE BOLINHA"

SELECT idProduto, produto, preco FROM produtos WHERE (produto LIKE '%vestido%' OR marca LIKE '%vestido%' OR descricao LIKE '%vestido%' OR loja LIKE '%vestido%') AND (produto LIKE '%bolinha%' OR marca LIKE '%bolinha%' OR descricao LIKE '%bolinha%' OR loja LIKE '%bolinha%') AND disponivel = 1

 

Utilizo PHP + MySQL

 

Atenciosamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja o engine da sua tabela... tabelas mySam acredito que são mais lentas do que as em innodb.

Indexando estas colunas talvez a velocide melhore também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por ndias
      select t1.id, (select count(campo) from tabela2 where id = t1.id) from tabela1 t1 where ....... select t1.id, (select count(t2.campo) from tabela2 t2 inner join tabela1 on tabela1.id = t2.id where t2.id = t1.id) from tabela1 t1 where ....... select t1.id, count(t2.campo) from tabela1 t1 left join tabela t2 on t2.id = t1.id where ....... Estou tentando dessas 3 formas e a única que roda é a segunda...mesmo assim, com muita lentidão...
       
      Existe alguma outra melhor forma de montar essa query?
    • Por Andrelirasp
      Tenho uma página onde exibe livros registrados, eu gostaria de fazer uma outra focada em busca para buscar dados nas tabelas.
       
      Gostaria de fazer um sistema de busca onde buscaria dados digitados de acordo com a categoria selecionada, porém não sei por onde começo.
      Eu gostaria de adicionar a opção de **filtrar** por **categoria** seguida de um `_<input type="text">_` para o usuário selecionar a categoria e escrever o que ele quer buscar, a categoria no caso seriam as tabelas:
          <select name="opcao_filtro">
                     <option value="nulo">--</option>                
                     <option value="titulo">Título</option>
                     <option value="autor">Autor</option>
                     <option value="tema">Tema</option>
                     <option value="editora">Editora</option>
                     <option value="indice">Índice</option>
          </select>

      Logo abaixo teria o input:
          <input type="text" name="busca" id="busca"> // Procurar em tabela tal, tal coisa
          <input type="submit" value="Procurar">
       
      E depois(opcional para o usuário) buscar por letras(funcionaria junto com o filtro de categorias):
          <a href="url">A</a>
          <a href="url">B</a>
      **Exemplo**: Usúario escolheu filtrar por título e quando ele clica na letra _" A "_ buscasse entre a categoria e exibisse os resultados dos títulos que comesse com a letra selecionada.
    • Por clickanapolis
      Pessoal eu estou criando um filtro de busca e quando eu seleciono por exemplo estado e envio via GET estado=CEARÁ
      o problema que o cliente pediu que possa ter mais de um estado, mais ai quando envio por exemplo:
      estado=CEARÁ&estado=GOIÁS
       
      Minha duvida é como fazer a query consultar os 2 estados.
    • Por emmanuelsiqueira30
      Pessoal boa tarde, 

      O cenário é mais ou menos assim o sistema em PHP estão rodando um servidor local em um tablet com Android pelo motivo do sinal de internet móvel não chegar nesses locais, porém eu precisaria de uma maneira de descarregar esses dados no momento em que o tablet voltasse para empresa com os cadastros de maneira que enviasse os dados cadastrados do dia no banco de dados MySQL em um servidor na internet, mas de forma incremental.
    • Por Adriano Barbosa
      Boa tarde
       
      Estou tento problemas com o retorno de um resultado de uma busca. Nessa página possui várias querys além do resultado.
       
      Existe uma maneira de executar as querys onde a próxima dependa de decisão da primeira?
       
      Att
×

Informação importante

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