maksik
28.01.2015, 21:10:15
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
28.01.2015, 21:18:39
Mozesz uzyc cache.
SpiritCode
29.01.2015, 07:59:01
Dlaczego nie pobierzesz tych danych jednym zapytaniem?
W sensie, dlaczego pobierasz każdą kolumnę osobno?
maksik
29.01.2015, 09:37:40
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
29.01.2015, 10:22:19
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
29.01.2015, 10:28:16
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
29.01.2015, 10:35:58
A BETWEEN Ci nie odpowiada?
maksik
29.01.2015, 10:54:33
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
29.01.2015, 11:17:44
Poczytaj o IN np. WHERE `data` IN ('2015-01-25', '2015-01-24', '2015-01-28')
maksik
29.01.2015, 12:05:46
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
29.01.2015, 12:07:14
ORDER BY RAND()
maksik
29.01.2015, 12:08:31
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
29.01.2015, 12:11:53
GROUP BY `data`?
maksik
29.01.2015, 12:19:55
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
29.01.2015, 12:34:23
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
2.02.2015, 13:27:29
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.