1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[MYSQL] - Optimizar tempo de pesquisa

Discussão em 'Web Development' iniciada por lsharkf, 3 de Dezembro de 2008. (Respostas: 8; Visualizações: 890)

  1. lsharkf

    lsharkf Power Member

    Viva, gostaria de saber quem me poderia indicar um bom tutorial para otpimizar uma pesquisa em MYSQL .

    Tenho um site que tem uma tabela com mais de 400 000 linhas , e a pesquisa está a tornar-se um bocado lenta.

    Tambem gostava de saber se existe uma diferença grande em usar um "SELECT COUNT(id)..." com um mysql_num_rows() onde a query seria baseada em "SELECT id FROM ...." nao sei se me fiz entender...
     
  2. RicardoMoreira

    RicardoMoreira Power Member

    Usando o COUNT obviamente que irá tornar os tempos de acesso bastante menores, visto que o mysql apenas retorna um registo, enquanto que usando o mysql_num_rows o mysql retorna os registos todos e a função é que trata de contar.
     
  3. 400.000 linhas com quantos fields?
    .. e a procura usa somente WHERE ou também LIKE e em quantos fields?
    os resultados são para algum calculo interno ou para algum list echo ?
     
  4. mascker

    mascker Power Member

    Re:

    Boas,

    Não te esqueças também de indexar os campos em que realizas procuras. Diminui em muito o tempo de resposta.

    De resto o artigo que o Armadillo te indicou é bastante bom.

    Saudações
     
  5. lsharkf

    lsharkf Power Member

    Viva,

    Eu tenho conta no Godaddy... é possível alterar o ficheiro my-large.cnf ?? :D

    Tipo imaginando que tenho uma base de dados com id, nome , alguem escreve "ferreira alberto" qual será a melhor maneira para ir buscar os "bernardos ferreira","albertos ferreira","ferreira alberto" ??

    Eu tenho usado o metodo do MATCH AGAINST tipo

    SELECT id, MATCH (nome) AGAINST ('ferreira alberto' IN BOOLEAN MODE) as relevancia FROM tabela WHERE MATCH (nome) AGAINST ('ferreira alberto' IN BOOLEAN MODE) ORDER BY relevancia DESC

    Existe algum metodo mais... pró? :D
     
  6. AliFromCairo

    AliFromCairo Power Member

    Boas, se pretendes optimizar a query, podes criar um índice full text para a coluna nome.
     
  7. lsharkf

    lsharkf Power Member

    Uma pergunta noob ( mas lá está... quando vier outro noob como eu pode tirar dúvidas ) ...

    O que faz um INDICE ? :x qual é a principal função deste atributo?
     
  8. AliFromCairo

    AliFromCairo Power Member

    A principal função é essencialmente optimizar a performance das queries. Supõe, por exemplo, que tens uma tabela relativamente grande que contém informações sobre produtos, com uma coluna chamada código, que corresponde ao código do produto, e que não faz parte da chave primária. Supõe agora que na tua aplicação, tens uma query que é utilizada muito frequentemente, e que consiste em obter os dados de um produto, dado o seu código, e.g., select * from produto where código = 'A20'. Neste caso, e de forma a optimizar a query, podias criar um índice sobre a coluna código, de modo a ser criada uma "estrutura" especial que te permite aceder aos dados da tabela muito mais rapidamente.

    Existem vários tipos de índices, desde o tipo hash que é adequado a operações de lookup como a que exemplifiquei acima, a outros que permitem optimizar queries que envolvem ranges, do tipo "entre data X e data Y". O índice full text funciona de uma maneira muito particular, pelo que te aconselho a ler um artigo técnico sobre o assunto.
     
    Última edição: 23 de Dezembro de 2008

Partilhar esta Página