Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] UPDATE, około 12000 rekordów ;]
sobieh
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 28.10.2004

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


Witam.

Jak w temacie :
Czy zna ktoś może jakiś sprawdzony szybki sposób na aktualizację około 12000 rekordów w bazie MySql ?

  1. UPDATE tabela SET kolumna = wartosc WHERE kolumna = wartosc

wykonywane 12 tyś. razy trwa wieki ... co dziwne INSERT (12 tyś) wykonuje się za to bardzo szybko.

Chodzi tutaj o całkowitą aktualizację cen w jednej z tabel na podstawie pliku CVS lub XML
więc aktualizować musi się wszystko niestety. Wiem że MySql nie aktualizuje wartości które
są identyczne jak podawane w zapytaniu ... nie wiem tylko czemu to się wykonuje tak długo.

Ten skrypt będzie używany raz na miesiąc więc czy wykonywanie go będzie wydajne nie ma znaczenia.
Chodzi tylko o to aby trwało to mniej niż 30 sekund (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Jeśli nie będzie innego rozwiązania to zostaje mi podzielić zapytania w paczki np. po 500 sztuk
i wysyłać je kolejno :/

Ten post edytował sobieh 26.09.2007, 19:27:18
Go to the top of the page
+Quote Post
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Nie da się napisać bardziej wydajnego zapytania niż to, które podałeś. Zapytania update wykonują się dłużej ponieważ najpierw trzeba znaleźć wiersz, który należy zaktualizować, a przemielić 12 tysięcy jakąś tabelę nie należy do najszybszych.

Co zrobić, by działało szybciej? Założyć index na pole, po którym następuje wyszukiwanie. Zmienić typ tabeli na np. MyISAM lub MEMORY.

Sądzę, że nie da się zjechać poniżej 30 sek. Zgaduję, że jest Ci to potrzebne do wykonania tych zapytań na stronie i wyskakuje Ci timeout. Zamiast kombinować z paczkami zapytań wykonaj skrypt z wiersza poleceń i kłopot z głowy.
Go to the top of the page
+Quote Post
sobieh
post
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 28.10.2004

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


Thx very much!

Tabela jest MyISAM od początku.
Index pomógł ... szczerze mówiąc to nie wpadłem na to (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Update zadziwiająco przyspieszyło i wykonuje się w ~3 sekundy.
Go to the top of the page
+Quote Post

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: 23.08.2025 - 23:29