[MYSQL] - Optimizar tempo de pesquisa

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...
 
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.
 
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 ?
 
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
 

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
 
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?
 
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:
Back
Topo