![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 384 Pomógł: 13 Dołączył: 16.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Mam w tabeli produkty z ich nazwami, do wgrywanych produktow robie dodatkowa kolumne `nazwa_unikalna` gdzie zapisuje tytul obciety do max 50 znakow. Nastepnie mam cos takiego w uproszczeniu:
czyli jezeli napotka drugi i kolejny produkt ktory ma taka sama nazwe unikalna, to usuwa go zeby nie bylo takich samych poduktow w bazie. Problem w tym ze baza ma pareset tysiecy rekordow i funkcja ta wykonuje sie pare minut, czym wiecej produktow przerobi tym bardziej zwalnia. Potrzebuje ja zastapic poleceniem sql, zeby zostawialo pierwszy produkt z taka nazwa a usuwalo nastepne, niestety nie mam pojecia jak to zrobic :/ 7 minut dokladnie wykonuje sie to zapytanie, jakbym zszedl do 2 byloby idealnie ... Ten post edytował Agape 25.08.2016, 15:02:39 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 384 Pomógł: 13 Dołączył: 16.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Panowie bardzo dziekuje wam za zainteresowanie tematem, znalazlem problem. Powyzszy skrypt wykonywal sie 7 min (ten na samej gorze). Zmienilem z in_array ktore jest bardzo wolne na isset ktore jest mega szybkie, ponizszy skrypt ktory robi to samo, a tylko jedna funkcja zostala zmieniona wykonuje sie w 1 sekunde !
chodzi na pewno o to ze in_array przeszukuje cala tablice (ponad 100 tys rekordow) a isset probuje odczytac pojedyncza wartosc, jesli jest git, jesli nie to juz nie szuka w tysiacach rekordow tylko zwraca ze nie ma. Nie wiedzialem ze jest az taka roznica |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 19:36 |