![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 30.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mój pierwszy post ![]() Mam jedną aktualną tablicę i tablicę wartości w bazie danych. Kod 1 wygląda tak:
Natomiast kod 2 wygląda tak:
Moje pytanie jest następujące: Czy wywołanie mysql_query powoduje wywołanie zapytania na bazie danych i przetrzymuje wynik gdzieś w pamięci? Czy jest to raczej na zasadzie "resource" jak na przykład przy otwieraniu pliku na dysku, a dopiero mysql_fetch wywołuje zapytanie pobierania z bazy. W drugim wypadku jak dobrze rozumiem dwa kody miałyby identyczny wpływ na obciążenie bazy danych. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
mysql_query() - PHP wysyła do bazy danych zapytanie SQL, pobiera wynik tego zapytania i zwraca resource
mysql_fetch_xxx() - PHP układa przetrzymywany u siebie wynik zapytania w odpowiednią tablicę i ją zwraca Lepszy wydajnościowo jest oczywiście drugi przykład. -------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 470 Pomógł: 75 Dołączył: 21.09.2005 Skąd: że znowu Ostrzeżenie: (0%) ![]() ![]() |
przykłady różnią się od siebie wynikiem działania więc nie można mówić że jeden jest lepszy a drugi gorszy :|
-------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 30.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Możliwe, że nie opisałem do końca
![]() W przypadku tego kodu:
pobieram całą zawartość tablicy z bazy danych. I teraz muszę znaleźć w "dane_akutalne" wiersz odpowiadający aktualnemu wierszowi z bazy danych i porównać wartości obu tablic, czyli $wiersz i $dane_aktualne[$i]. Wadą tego rozwiązania jest to, że jak baza urośnie to będę miał np. 1000, 10000 wierszy do porównania z drugą tablicą.. max 200 wierszy. Natomiast w przypadku tego kodu:
Tak naprawdę ograniczam się tylko to porównania wybranych rekordów o określonym user_id. Czyli sprawdzam tylko to co muszę uaktualnić. W drugim przypadku jak wynika będę miał np. 200 zapytań do bazy, ale zwrócony zostanie maksymalnie jeden wiersz lub 0, jeśli nie ma go w bazie. I teraz chodzi o wydajność takiego rozwiązania.. zrobić jedno zapytanie a później sprawdzać wszystko(baza przeciez stale rośnie) z nowymi, czy zrobić tylko określoną ilość zapytań i przetwarzać tylko te przypadki. Nie wiem czy takie masowe wysyłanie zapytań nie przeciąży bazy. Oczywiście pierwszy sposób można zoptymalizować na razie tylko testuję. Ewentualnie jeśli ktoś zna jakiś pomysła na to aby uaktualnić w prosty sposób baze lub jakiś algorytm będę wdzięczny ![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 470 Pomógł: 75 Dołączył: 21.09.2005 Skąd: że znowu Ostrzeżenie: (0%) ![]() ![]() |
nie wiem czy dobrze rozumiem Twój problem ale przecierz chyba drugie zapytanie tez można wykonać tylko raz i pobrać wszystkie wyniki. mam na myśli coś takiego
a to zwróci ci jednorazowo wszystkie niezbędne pola (i imho bdzie najszybsze) -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 01:41 |