Leandromx 0 Denunciar post Postado Setembro 17, 2009 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
Matias Rezende 50 Denunciar post Postado Setembro 17, 2009 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
Leandromx 0 Denunciar post Postado Setembro 17, 2009 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
Motta 645 Denunciar post Postado Setembro 17, 2009 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
hao 0 Denunciar post Postado Setembro 17, 2009 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
Leandromx 0 Denunciar post Postado Setembro 18, 2009 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
William Bruno 1501 Denunciar post Postado Setembro 18, 2009 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
Leandromx 0 Denunciar post Postado Setembro 18, 2009 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
William Bruno 1501 Denunciar post Postado Setembro 18, 2009 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
Leandromx 0 Denunciar post Postado Setembro 18, 2009 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