![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 281 Pomógł: 0 Dołączył: 8.07.2005 Skąd: EU Ostrzeżenie: (0%) ![]() ![]() |
Witam,
czy można jakoś zoptymalizować poniższe działanie skryptu php, zastanawiam się jakby to zrobić: tabele: users id | imie | nazwisko | ------------------------ 1 | jan | kowalski | users_images users_id | image | ----------------------- 1 | img1.jpg 1 | img2.jpg 1 | img3.jpg
niby to jakoś działa ale przez zastosowanie funkcji get_total_images zwiększa mi się liczba zapytań do bazy bo każdy wyświetlany rekord "odpytuje" baze ile dany użytkownik ma zdjęć np. mając 1000 użytkowników i chcąc ich wyświetlić to w pętli WHILE muszę odpalić 1000 razy jedno zapytanie aby sprawdzić ile posiadają zdjęć (IMG:style_emoticons/default/facepalmxd.gif) czy dało by się użyć tylko jednego zapytania sql aby wyświetlić użytkowników oraz liczbę zdjęć? pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Do tego celu uzywa sie LEFT JOIN users_images
a potem group by oraz count |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 859 Pomógł: 177 Dołączył: 29.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 281 Pomógł: 0 Dołączył: 8.07.2005 Skąd: EU Ostrzeżenie: (0%) ![]() ![]() |
super, dziękuję bardzo za pomoc,
ale mam pytanie odnośnie tego zapytania które podałeś: spróbowałem je odpalić ale niestety skrypt się zawiesza kończąc działenie informacją o przekroczeniu czasu na wykonanie skryptu czy nie ma w nim jakiegoś błędu? zmieniłem je trochę dodając limit i aby pobieral z tabeli users tylko imie
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 859 Pomógł: 177 Dołączył: 29.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował aras785 6.04.2016, 11:54:36 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 281 Pomógł: 0 Dołączył: 8.07.2005 Skąd: EU Ostrzeżenie: (0%) ![]() ![]() |
jeszcze raz dzięki za pomoc,
dla mnie zapytanie na oko wygląda że jest poprawne ale niestety skrypt się zawiesza (przekroczenie czasu), może w zapytaniu jest jakiś błąd? niestety ja nie jestem w stanie tego sprawdzić, pomożesz jeszcze raz? Pozdrawiam |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No jesli masz duuuuuzo userow i duuuuuzo zdjec do userow i jeszcze dodatkowo nie zalozyles indeksow na te tabele, to skrypt moze trwac dlugo
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 281 Pomógł: 0 Dołączył: 8.07.2005 Skąd: EU Ostrzeżenie: (0%) ![]() ![]() |
userow jest 43000
a zdjec 82000
a czy z indeksami można coś pozmieniac w tych tabelach? |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No wypadaloby zalozyc index na users_id
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 281 Pomógł: 0 Dołączył: 8.07.2005 Skąd: EU Ostrzeżenie: (0%) ![]() ![]() |
założyłem indeks na users_id (PRIMARY KEY) i różnica jest kolosalna, bez jakiegokolwiek limitu wyświetla mi wszystkich userów w mgnieniu oka, albo nawet szybciej (IMG:style_emoticons/default/wink.gif)
nie zdawałem sobie sprawy za co odpowiadają indeksy, trochę poczytałem i dalej będę drążyć temat indeksów (IMG:style_emoticons/default/wink.gif) mam jeszcze jedno pytanie, które zapytanie będzie "lepsze" aby policzyć liczbę rekordów w tabeli:
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 114 Pomógł: 25 Dołączył: 22.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
Zapewne te, które będzie wykonywać się krócej - sprawdź czas w jakim się wykonuje. Przy małych bazach i tak niezauważalne.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 09:48 |