Ir para conteúdo

POWERED BY:

Arquivado

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

Leandromx

[Resolvido] Deixar a busca mais rápida

Recommended Posts

Bom dia pessoal,

Estou postando aqui para saber se tem algum comando ou função do PHP, mas pode ser que seja no MYSQL.

 

Eu tenho uma base de dados com mais de 11 mil dados.

Na hora de fazer uma busca demora pra caramba, e olha que está com paginação.

 

É possível deixar isso mais rápido??

Compartilhar este post


Link para o post
Compartilhar em outros sites

No PHP não. O que pode ser feito é no Mysql, revisando a estrutura do teu banco de dados e a consulta que está sendo enviada.

 

Poste os 2 para podermos ajudar melhor. De qualquer forma, vou mover para o fórum de Mysql.

 

Tópico Movido

PHP http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal Matias,

Vamos lá... Estou fazendo um teste local e dá aquele errinho básico né

 

Fatal error: Maximum execution time of 30 seconds exceeded
Coloquei mas ficou por isso.

set_time_limit(60)

 

Vampos por parte....

 

Minha Estrutura MYSQL

 


$sql=("select * from $tabela4 l INNER JOIN $tabela5 a ON l.id = a.id_leg LEFT JOIN user_custom_leg ON user_custom_leg.checked='$_POST[f_rel]'  WHERE 
  a.id_area='$_POST[f_areas_1]' 
  OR a.id_area='$_POST[f_areas_2]' 
  OR a.id_area='$_POST[f_areas_3]'
  OR a.id_area='$_POST[f_areas_4]'
  OR a.id_area='$_POST[f_areas_5]'
  OR a.id_area='$_POST[f_areas_6]'
  OR a.id_area='$_POST[f_areas_7]'
  OR a.id_area='$_POST[f_areas_8]'
  OR a.id_area='$_POST[f_areas_9]'
  OR a.id_area='$_POST[f_areas_10]'
  OR a.id_area='$_POST[f_areas_11]'
  OR a.id_area='$_POST[f_areas_12]'
  OR a.id_area='$_POST[f_areas_13]'");

esse POST f_areas são check box, se tiver alguma forma de melhorar isso, seria legal..

É possível melhorar isso????

Compartilhar este post


Link para o post
Compartilhar em outros sites

A técnica para tornar consultas mais rápidas chame-se tuning e não é simples , mas em geral o uso de índices resolve isto.

 

Dá uma lida na documentação sobre o uso de índices.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se ao inves de usar vários OR ele usar IN não ficaria mais rápido?

 

 

$ids_area = $_POST['ids_area'];
$sql = 'SELECT campos FROM tabela WHERE id_area IN ('.implode(', ', $ids_area).')';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara não fiz o teste..

Mas achei interessante só não entendi, porque você deu um implode.

 

Como eu vou pegar os valores dos campos f_areas?

 

Porque você deixou assim

$ids_area = $_POST['ids_area'];
Não seria isso $_POST['ids_area'][];

Tipo eu fazer um array ou não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O IN realmente é mais rápido que vários ORs...

a sintaxe do IN é IN(1,5,4,8,10).. entendeu?

 

uma 'listagem' de valores.. ele fez um implode, para separar o array em uma string... e ai montar essa forma que eu exemplifiquei.

 

isso aqui:

$ids_area = $_POST['ids_area'];
é só um apelido pro vetor, está guardando todas as posições nessa outra variável.. em php é 'dificil' saber quando se tem uma variável escalar ou um array. Mas oque lhe foi mostrado está correto.

Rode, e poste caso haja erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Willian até entendi achei bacana até...

São entendi o seguinte..

Meus campos f_areas são check box...

Então eu tenho 10 check nomeados f_areas_1,f_areas_2 etc...

 

Ai eu queria saber se os 10 checks eu deixo todos com o mesmo nome???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah tá.. a idéia é que eles sejam assim:

<input type="checkbox" name="ids_area[]" value="1" />
<input type="checkbox" name="ids_area[]" value="3" />
<input type="checkbox" name="ids_area[]" value="9" />
<input type="checkbox" name="ids_area[]" value="5" />
Ai sim funciona.

Pois você irá receber um array $_POST['ids_area'], com posições:

$_POST['ids_area'][0], $_POST['ids_area'][1], $_POST['ids_area'][2] ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putsssssss valeu mesmo gente...

Ficou até melhor, mais rápido e mais organizado

Abraçosssss

Resolvido

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.