smartpointer 0 Zgłoś post Napisano Luty 6, 2005 czy należy za wszelką cenę zmniejszać ilość zapytań do bazy? taki przykład: Czy lepiej robić tak: $res1 = mysql_query ("SELECT a FROM tab1 WHERE id = '1'"); $res2 = mysql_query ("SELECT b FROM tab2 WHERE id = '1'"); $res3 = mysql_query ("SELECT c FROM tab3 WHERE id = '1'"); $res4 = mysql_query ("SELECT d FROM tab4 WHERE id = '1'"); $res5 = mysql_query ("SELECT e FROM tab5 WHERE id = '1'"); $res6 = mysql_query ("SELECT f FROM tab6 WHERE id = '1'"); Czy tak: $res = mysql_query ("SELECT tab1.a, tab2.b, tab3.c, tab4.d, tab5.e, tab6.f FROM tab1, tab2, tab3, tab4, tab5, tab6 WHERE tab1.id = '1' AND tab2.id ='1' AND tab3.id='1' AND tab4.id='1' AND tab5.id='1' AND tab6.id='1'"); w pierwszym przypadku zapytań jest aż 6, ale za to są proste; w drugim zapytanie jest tylko jedno ale bardzo złożone Co najmniej obciąży serwer? Udostępnij ten post Link to postu Udostępnij na innych stronach
irvinek 4 Zgłoś post Napisano Luty 6, 2005 do odpowiedzy niejestem pewny ale wydaje mi się że drugi ale niejestem w 100% pewien Udostępnij ten post Link to postu Udostępnij na innych stronach
gskaruz 0 Zgłoś post Napisano Luty 6, 2005 Raczej metoda pierwsza. Robiłem kiedyś mocno złożoną wyszukiwarkę, która pobierała jednym zapytaniem dane z wielu tabel i zapytanie wykonywało się na localhoscie 16 sekund! Rozbiłem to na kilka zapytań + grupowanie wyników w PHP i całość (lokalnie) wykonywała się sekundę. Podobnych sytuacji nie miałem zbyt wiele, bo nie tworzę zapytań pobierających dane z mnóstwa tabel. Aha, serwis klienta był tworzony ok. 5 lat temu. Jedno z zapytań jest tak skomplikowane, że nawet home.plsię wykrzaczył (503, service temporarily unavailable. server is temporarily overloaded) Udostępnij ten post Link to postu Udostępnij na innych stronach
ertcap 0 Zgłoś post Napisano Luty 6, 2005 Co najmniej obciąży serwer? W tym przypadku zdecydowanie metoda druga. //edit: na potwierdzenie mojej tezy: metoda pierwsza wywolana 50000 razy - 32 sekundy metoda druga - 9 sekund pzdr. Udostępnij ten post Link to postu Udostępnij na innych stronach
smartpointer 0 Zgłoś post Napisano Luty 7, 2005 Dziękuję za odpowiedzi. Rzeczywiście jedno złożone wykonuje się szybciej. Nie byłem pewien, czy czas wykonania jest wystarczającym kryterium do oceny obciążenia serwera. ...zapytanie wykonywało się na localhoscie 16 sekund!......Aha, serwis klienta był tworzony ok. 5 lat temu... Zapewne przez te 5 lat wiele się zmieniło. Udostępnij ten post Link to postu Udostępnij na innych stronach
gskaruz 0 Zgłoś post Napisano Luty 7, 2005 Jedno złożone wykonuje się szybciej... ale gdy w tabelach nie jest dużo danych. Załóżmy że w każdej z tabel masz po 1000 rekordów. Przy jednym złożonym zapytaniu masz silnik bazy ma duuużo do zrobienia. Ewentualnie w phpMyAdmine przed zapytaniem daj EXPLAIN, moze to trochę rozjaśni sytuację. Zapewne przez te 5 lat wiele się zmieniło. Tak.. danych przybyło.. złożone zapytanie wyszukiwarki trzeba było rozbić na mniejsze zapytania. Udostępnij ten post Link to postu Udostępnij na innych stronach
ertcap 0 Zgłoś post Napisano Luty 7, 2005 Jedno złożone wykonuje się szybciej... ale gdy w tabelach nie jest dużo danych. Załóżmy że w każdej z tabel masz po 1000 rekordów. Przy jednym złożonym zapytaniu masz silnik bazy ma duuużo do zrobienia. Ewentualnie w phpMyAdmine przed zapytaniem daj EXPLAIN, moze to trochę rozjaśni sytuację. Przy 5000 rekordach nadal bedzie szybciej jednym zlozonym zapytaniem Ale zgadzam sie, ze przy tabelach, gdzie jest bardzo duzo rekordow szybciej wyjdzie uzyc kilka prostych zapytan. pzdr. Udostępnij ten post Link to postu Udostępnij na innych stronach