Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pętle w Mysql - wypisanie wszystkich dat z przedziału, Loop in MySQL
Sztef89
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.12.2010

Ostrzeżenie: (0%)
-----


Witam,

Szukam polecenia pasującego do mojego zadania lecz nic nie pasuje a całość chciałbym zrealizować po stronie bazy danych.

Otóż mam dwie daty startową i końcową oraz rekordy w bazie, każdy z tych rekordów ma datę start i stop.
Chciałbym wyświetlić wszystkie dni od daty startowej do końcowej zliczając ile tych rekordów będzie pasowało do poszczególnych dat.

Nie chce rozbijać tych czynności na php.

Domyślam się że w MySQL trzeba będzie zastosować jakąś pętle. Najważniejsze jest dla mnie aby zapytanie było szybkie = wydajne.

Rekordów mam ponad 1000.

Z góry dziękuję za pomoc, jak coś uda mi się znaleźć to tu umieszczę, może wspólnymi siłami dojdziemy jak to zrobić (IMG:style_emoticons/default/smile.gif)

Pozdrawiam serdecznie
Stefan
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sztef89
post
Post #2





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 6.12.2010

Ostrzeżenie: (0%)
-----


Po czym wnioskujesz że jest do dupy ? Mógłbys jakoś w skrócie wyjaśnić ?

Dodałem wspólny index, mam wrażenie jakby było lekko lepiej ale stanowczo to za mało:
http://imgur.com/84sOCNn

przeanalizowałem polecenie które mi podałeś, faktycznie wyświetla też to co chce ale 10x szybciej ! (IMG:style_emoticons/default/smile.gif)
zaraz zmodyfikuje większe polecenie i powiem Ci jakie efekty ! dzięki !

ehh tylko w tym podzapytaniu nie mogę użyć JOINa... pomyśle nad tym jeszcze jak wstanę (IMG:style_emoticons/default/smile.gif)

Problem rozwiązany w ten sposób, że zrobiłem kolejną tabele w której będę dopisywał wyniki. Pełne zapytanie generuje się 1.5s dlatego nie nadaje się aby wszyscy użytkownicy z niego korzystali, trzeba było zrobić ta agregację... dzięki za Waszą pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
sazian
post
Post #3





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


Cytat(Sztef89 @ 10.01.2014, 14:45:03 ) *
przeanalizowałem polecenie które mi podałeś, faktycznie wyświetla też to co chce ale 10x szybciej ! (IMG:style_emoticons/default/smile.gif)
zaraz zmodyfikuje większe polecenie i powiem Ci jakie efekty ! dzięki !

działa szybciej dlatego że unikasz tworzenia tabeli tymczasowej. Ale prawdopodobnie dalej musi przeszukiwać ponad 300000 rekordów

Cytat(Sztef89 @ 10.01.2014, 14:45:03 ) *
ehh tylko w tym podzapytaniu nie mogę użyć JOINa... pomyśle nad tym jeszcze jak wstanę (IMG:style_emoticons/default/smile.gif)


oczywiście że możesz użyć JOIN, tylko pamiętaj że podzapytanie w SELECT musi zwracać wartość.
Jeśli wynikiem jest wektor lub tabela to musisz potraktować podzapytanie jak tabelę czyli przenieść je do FROM lub JOIN.

Cytat(Sztef89 @ 10.01.2014, 14:45:03 ) *
Problem rozwiązany w ten sposób, że zrobiłem kolejną tabele w której będę dopisywał wyniki. Pełne zapytanie generuje się 1.5s dlatego nie nadaje się aby wszyscy użytkownicy z niego korzystali, trzeba było zrobić ta agregację... dzięki za Waszą pomoc (IMG:style_emoticons/default/smile.gif)

czyli jak dobrze rozumiem zrobiłeś dodatkową tabelę z "cache" ? Bardzo słusznie!
dobrym pomysłem może być użycie wyzwalacza który będzie tą tabelę automatycznie aktualizował
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 23:27