![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 6.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mam takie zapytanie
W tabeli produkty mam jak sama nazwa wskazuje produkty, każdy produkt ma unikalne ID (varchar) oraz zwykłe inkrementowane ID (INT). W tabeli produkt dane znajdują się dodatkowe dane to produktu z tabeli "produkty". Łączyłem tabele kolumną uniqprodukt i niestety takie rozwiązanie nie było zbyt dobre chciałbym łączyć kolumny za pomocą zwykłego ID(INT), tak zapytania trwają o wiele szybciej. Chciałbym powyższe zapytanie przerobić na UPDATE. Po prostu ustawić wartość "o.id" w kolumnie "d.id_fk". Wierszy jest ok 600tys dlatego przez php obliczyłem ze zajęłoby to ok 8dni ![]() PS. ten warunek na końcu to numer ile udało mi się wierszy przerobić do tej pory (26/600 tys ![]() Żeby lepiej przedstawić sytuacje zrobiłem screena: ![]() Nie uchwyciłem sytuacji gdy danych do produktu jest więcej niż 1 ale to tylko będą kilka razy te same wiersze więc to niczego nie zmienia. ROZWIĄZANIE Jak zwykle... siedzę parę godzin żeby rozwiązać samemu problem, a olśnienie przychodzi dopiero jak napisze na forum ![]() Popełniłem taki skrypt php aby rozwiązać ten problem:
Dodam, że pierwsze zapytanie zawierało ok 388 tys wierszy czyli skrypt miał do wykonania właśnie tyle zapytań UPDATE, całość trwała ok 2min ![]() Uczcie się na moim błędzie i nie używajcie do INNER JOIN zmiennych znakowych jako łącznika tylko zwykłe INTy ![]() ![]() Ten post edytował Sztef89 29.11.2011, 18:09:20 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 17:26 |