Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: długość ładowania danych z mysql do porównywarki
Forum PHP.pl > Forum > PHP
maksik
Mam problem z szybkością ładowania się danych gdyż trwają kilka sekund przy stworzonej porównywarce danych, porównującą z danych uzyskanych w ciągu 5 dni, działa ona następująco.

Składa się ona z 5 kolumn : Dziś | wczoraj | -2 dni | -3dni | -4dni

Najpierw pobierana jest poprzez SELECT DISTINCT kolumna "Dziś" z Limit 50 metodą while, przy czym w każdym rekordzie jest wykonywane kolejne zapytanie pobierające specjalny kod identyfikujący zmienną oraz sprawdzający jej daną z wczoraj, następnie kolejne zapytanie sprawdza z przedwczoraj itd.

Reasumując ładuje 50 rekordów, przy każdym są wykonywane 4 dodatkowe zapytania co daje ok. 200 zapytań na raz, trwa to dosyć długo bo nawet 8 sekund czy da się to w jakiś sposób przyśpieszyć, czy obrana metoda pobierania danych jest zła?
rad11
Mozesz uzyc cache.
SpiritCode
Dlaczego nie pobierzesz tych danych jednym zapytaniem?
W sensie, dlaczego pobierasz każdą kolumnę osobno?
maksik
każdy wiersz składa się z czterech kolumn, mając pierwszy wynik, musze na jego podstawie znaleźć następny, później mając dane tego drugiego wyniku musze znaleźć trzeci itd.

SpiritCode
Nie no... Dalej nie rozumiem... Albo jestem głupi albo to co piszesz nie ma zbytnio sensu. Ale mniejsza...

Z tego co rozumiem masz tabelę z kolumnami z danymi z 5 dni.
Pobierasz dzień dzisiejszy i potem dociągasz poprzednie dni osobnym zapytanie? Po co?!
maksik
Jest to porównywarka który domyślnie w jednej kolumnie wyświetla wyniki z dzisiejszego dnia, nastepnie w pozostałych 4 kolumnach wybieram datę wyników które porównać z poprzednimi, dalsze działałnie opisałem wcześniej.
Jeżeli chodzi o jedno zapytanie w takim razie mogę połączyć jakoś w jedno zapytanie tego typu SELECT który teraz jest oddzielnie po to, aby odpowiadał każdej kolumnie z różnicą dat?
SELECT id WHERE Numer='x" and Data '2015-01-28'
SELECT id WHERE Numer='x" and Data '2015-01-27'
SELECT id WHERE Numer='x" and Data '2015-01-26'
SELECT id WHERE Numer='x" and Data '2015-01-25'
SpiritCode
A BETWEEN Ci nie odpowiada?
maksik
no tak tylko BEETWEEN ustala zakres a ja chcę pobrać dowolnie pojedyńcze wartości "id" jaka jest np. dla date='2015-01-29' , date='2015-01-25', date='2015-01-23'

czyli wg. tego pobierze mi kolejno wartości od 23-29 a ja nie chce z dni które nie były uwzględnione jak np. 01-28.
markuz
Poczytaj o IN np. WHERE `data` IN ('2015-01-25', '2015-01-24', '2015-01-28')
maksik
tylko czy można w SELECT to jakoś rozdzielić, chodzi o to aby można było wyniki zapytania umieścić w dowolnej mieszanej kolejności?
phpion
ORDER BY RAND()
maksik
nie nie chodzi o losową kolejność tylko, żebym mógł w dowolnym miejscu zamieścić wynik przypisany dla daty dzisiejszej, w innym dla wczorajszej itd, aby każdy miał oddzielną zmienną przypisaną dla danej daty
markuz
GROUP BY `data`?
maksik
tak, ale to założy, że chcę od najnowszej daty sortować lub na odwrót, a w sposób taki by najpierw wyświetlić kolejno 01-28, 01-29, 01-25 ?
rzecz w tym że porównarka ma mieć możliwość wybrania nie chronoligcznie sortowanych dat, a w dowolnej kolejności
markuz
co ma GROUP BY do sortowania? nic. Staram Ci się pomóc ale im dalej tym mniej Cię rozumie.
Pokaż mi kod oraz zapytania z których korzystasz.
marekpzn1987
a wiecie może gdzie znaleźć jakiś kurs odnośnie samego sqla ?
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.