Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Bardzo mała szybkość zapytań do SQL
JohnyBB
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 16.05.2008

Ostrzeżenie: (0%)
-----


Witam.
Jestem w miarę początkującym i doszedłem do problemu z którym nie mogę sobie poradzić, mianowicie:
jest sobie baza danych SQL, jest skrypt PHP który ma za zadanie wczytanie danych z pliku XML.
Plik XML - dość duży - około 16 tys pozycji.
Skrypt 'leci' po kolei i wczytuje dane z pliku, jeśli tylko wyświetlam te dane to trwa to moment- natomiast gdy robię UPDATE do bazy trwa to bardzo długo i wysypuje się po pewnym czasie.
Prawdopodobnie mam gdzieś błąd który zwalnia całą procedurkę - czy mogę prosić o pomoc forumowiczów ?


CODE

$data = simplexml_load_file(file.xml');


foreach($data -> produkty as $produkty)
{
foreach($produkty -> produkt as $produkt)
{

$id = (string) $produkt['id'];
$cena_netto = (string) $produkt['cena_netto'];
$dostepny = (string) $produkt['dostepny'];


if ($dostepny>0)
{

$query = "
UPDATE produkt SET wyswietlony=1,cena_netto='$cena_netto' WHERE kod_producenta LIKE '$id'
";
$result = mysql_query($query)
or die("Query UPDATE is failed");
}


}
}


Ten post edytował JohnyBB 16.05.2008, 13:52:09
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kocurro
post
Post #2





Grupa: Zarejestrowani
Postów: 461
Pomógł: 32
Dołączył: 17.09.2003
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Po primo - używasz mało wydajnej metody by odczytywać XML'a.

Po sekundo zamiast LIKE daj = .

Po tertio - jeśli robisz update to nie wywalaj bez tranzakcji w przypadku błędu bo integralności danych się sypie.

Po quatro - PHP wykłada się na alokacji pamięci w tym wypadku. Stwórz własny parser xml (patrz funkcja xml_parse czy jakoś tak), wywal niepotrzebne pętla.

Po quinto - jeśli możesz użyj prepared statements

Po .... - nie stosuj konstrukcji w PHP'ie " $zmienna " - przy takiej ilości danych faktycznie może to trochę obciążać

Po .... - powiedz jaka baza danych i (jeśli to ma znaczenie) jaki typ tabel a porawdzę więcej

Po .... - dodaj klucze

Po .... - zależnie od bazy danych możesz być zmuszony po tak ostrej zmianie danych dokonać analizy danych by odnowić klucze

Po .... - dlaczego cena netto jest ciągiem znaków a nie liczbą decimal ? to jest niepotrzebne obciążanie bazy danych (czyt. źle zaprojektowana baza )

pozdr.
Łukasz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 17:42