Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] UPDATE
Forum PHP.pl > Forum > PHP
sobieh
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 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 :/
batman
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.
sobieh
Thx very much!

Tabela jest MyISAM od początku.
Index pomógł ... szczerze mówiąc to nie wpadłem na to smile.gif

Update zadziwiająco przyspieszyło i wykonuje się w ~3 sekundy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.