![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
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 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. 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ł |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 23:27 |