![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 0 Dołączył: 31.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
w jaki sposób najlepiej aktualizować dane w bazie danych? Zakładając ze użytkownik edytuje swój profil, zmienia tylko imię, Do tej pory robiłem aktualizacje całego wiersza. Czy warto i w jaki sposob sprawdzić co sie zmieniło jeśli chodzi o rekordy i dopiero aktualizować tylko konkretne zmiany? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 419 Pomógł: 42 Dołączył: 12.08.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cóż, no możesz niby to zrobić ale MySQL i tak aktualizuje tylko te kolumny które się zmieniły. Więc to w sumie nie ma dla Ciebie większego znaczenia.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Możesz sobie porównywać jakei dane mial user wczesniej a jakie teraz ale czy jest sens? Nic na tym nie zyskasz bo w php i tak bedziesz musial sprawdzić co zostało zmienione a co nie a to zajmuje wiecej czasu niz update z wszystkimi polami.
-------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 35 Dołączył: 5.12.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
A jeżeli zrobimy sobie model który będzie miał pola pobrane z bazy zapisane w jednej tablicy ($vals) a wprowadzone zmiany będzie przechowywał w innej ($valsChanged). Do polecenia update będą przekazywane tylko kolumny zapisane w $valsChanged. Po wykonaniu polecenia update nastąpi nadpisanie zmiennych z tablicy $vals przez zmienne z tablicy $valsChanged a sama tablica $valsChanged zostanie wyczyszczona.
W wypadku gdy użytkownik będzie chciał się dostać do obecnej wartości danej kolumny zostanie zwrócona wartość z tablicy $valsChanged jeżeli istnieje w przeciwnym warunku z tablicy $vals.
To tylko taki schemat ideologiczny nie sprawdzany. Ale czy to nie będzie bardziej efektywne niż za każdym razem wysyłanie wszystkiego ![]() -------------------- Jeżeli pomogłem rozwiązać Twój problem, kliknij pomógł.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Wiec w takim razie zmierz czas wykonywania skryptów i zobacz, która metoda jest szybsza.
Kod function pobierz_czas(){
list($usec, $sec) = explode(" ", microtime()); return((float)$usec + (float)$sec); } $start=pobierz_czas(); // tutaj kod do zmierzenia printf("Skrypt wykonał się w %.5f sekund.", pobierz_czas()-$start); -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 09:48 |