![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 4 Dołączył: 10.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Przechodząc do sedna sprawy. Chciałbym zoptymalizować poniższe zapytania.
Nie liczę na gotowca, lecz bardziej na wskazówki, informacje na temat funkcji, którymi powinienem się zainteresować. Ten post edytował solid23 18.11.2009, 19:06:31 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 568 Pomógł: 192 Dołączył: 7.03.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Możesz połączyć zapytania mysql i warunek w phpie, tylko nie wiem czy ma to sens.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 749 Pomógł: 37 Dołączył: 3.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Po co robić dwa zapytania, skoro możesz to zrobić na jednym?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 215 Pomógł: 0 Dołączył: 13.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
A więc tak...
1) Pierwsze w warunku zawsze powinno być te, które najbardziej okroi wyniki. Im mniej masz po pierwszym warunku wyników, tym lepiej, bo każdy kolejny AND leci już po mniejszej puli wyników. 2) Wyciągasz z bazy tylko pole o nazwie 'field', więc tylko je walnij do zapytania za SELECT, a nie *. To zmniejsza liczbę przesyłanych danych 3) Jeśli masz kilka opcji tych samych a tylko jedną różną to możesz wrzucić to jako jedno zapytanie z warunkiem zmiennym ujętym i wyszczególnionym w IN... tutaj miałbyś Choć symbol mocniej by Ci zjechał wynik więc pchnąłbym go jako pierwszy zaraz po WHERE, a nie jako drugi (nie znam rozkładu danych w bazie, ale zgaduję, że tych z symbol = 'G' jest o wiele mniej niż z id_st = 1 czy id_st = 2) (IMG:style_emoticons/default/smile.gif) Obrobić te dane w PHP można już jak chcesz sprawdzając poprzez wrzucene do wyniku nie tylko field, ale i id_st. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 4 Dołączył: 10.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za pomoc. Jednak wystąpił kolejny problem. Aktualnie kod wygląda tak (wszystkie pobrane rekordy wyświetlają się w divie o id "first", a powinny tylko te gdzie id_st=1):
Głównie zależy mi na tym, aby rekordy gdzie id_st jest równe "1" wylądowały w divie o id "first", a reszta (id_st=2) w divie o id "second". Próbowałem też inaczej - wrzuciłem warunek w pętle - wszystko działało prawidłowo, lecz w każdym divie był wyświetlany tylko jeden rekord. Ten post edytował solid23 19.11.2009, 18:10:01 |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Popatrz na końcówkę mojego ostatniego posta. Tam już pisałem, że musisz to w PHP potem podzielić pod kątem id_st. Zrób sobie pomocniczą zmienną, zainicjuj ją pierwszą wartością jaka ma być w id_st i sprawdzaj czy id_st się zmieniło. Jeśli tak to zamknij dotychczasowy div i otwórz nowy. Oczywiście by nie robiło to co i rusz, to w zapytaniu posegreguj rekordy po id_st (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 4 Dołączył: 10.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Masz na myśli coś takiego? Nie wiem czy dobrze zrozumiałem.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 4 Dołączył: 10.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cytat if($smth['field']==1) Poprawka: if($smth['id_st'] == 1) Nie wiem czy dokładnie o to chodziło thekowi, ale Twoje rozwiązanie, maly_swd jak najbardziej działa. Dzięki za pomoc, dostajecie "pomógł" (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
"Poprawka: if($smth['id_st'] == 1)", no tak -> moje przeoczenie
|
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Widzę, że mój pomysł został dobrze zinterpretowany. Tylko zapomniano dopisać drobiazgu, o którym myślałem, że będzie odczytany między wersami. Przy każdym zmieniającym DIVy przejściu pętli $id_st się nadpisuje wartością $smth['id_st'], bo inaczej po zmianie wartości na 2 każdy kolejny wers będzie nowym div, a ma to nastąpić tylko w przypadku zmiany id_st. Dla dwóch różnych id_st algorytm maly_swd będzie moim zdaniem lepszym rozwiązaniem. W przypadku nieograniczonej liczby id_st mała modyfikacja mojego sprawi, że będzie on uniwersalny.
Sam zerknij jak teraz działa dla G, niezależnie od id_st. A wymyślanie wielkiej ilości IF-ów staje się zbędne (IMG:style_emoticons/default/smile.gif) Ten post edytował thek 20.11.2009, 11:23:40 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 02:47 |