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ł |
|
|
|
Sztef89 Pętle w Mysql - wypisanie wszystkich dat z przedziału 9.01.2014, 16:41:11
Kshyhoo 1. Pokaż, co zrobiłeś do tej pory (kod).
2. Przesz... 9.01.2014, 16:44:13
Sztef89 Nie wiem jak był temat zatytułowany, próbowałem na... 9.01.2014, 17:10:46
Kshyhoo Drugi wynik w Google.
Ogólnie w Google. 9.01.2014, 19:00:00
sazian w skrócie
[SQL] pobierz, plaintext SELECT DATA,co... 9.01.2014, 19:26:46
Sztef89 Zamiast odsyłać mnie do Google gdzie nic nie znala... 9.01.2014, 19:34:34
sazian to może tak
[SQL] pobierz, plaintext d.id, d.DATA... 9.01.2014, 19:59:12
Sztef89 gdy wpisze ręcznie zakres to wydajność nie zmienia... 9.01.2014, 20:48:45
sazian explain select ... 9.01.2014, 20:53:37
Sztef89 Twój kod nie przejdzie bo nie chce aby mi zliczało... 9.01.2014, 21:42:43
sazian a sprawdziłeś ?
ma SELECT count(*) FROM `dan... 9.01.2014, 21:59:38 ![]() ![]() |
|
Aktualny czas: 29.12.2025 - 23:51 |