Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 23.10.2007 Ostrzeżenie: (0%)
|
Z góry przepraszam za mało znaczący tytuł tematu.
Posiadam tabelę w bazie danych w mysql o strukturze: `id` - int, autoincremental `name` - varchar `status` - varchar `start` - datetime `stop` - datetime `opis` - longtext Przechowywane i dopisywane są w niej nazwy wykonanych zadań wraz z datą startu, stopu, oraz statusie zakończenia + w opisie log. Wartości dla `name` są powtarzalne, jest to ok 150 różnych wpisów (chociaż zawsze mogą dojść nowe). `status` możne przyjmować tylko 3 wartości- 'O' (o.k) , 'B' (bad), 'U' (unknown). Problemik polega na wyszukaniu wszystkich zadań, które ostatnio zakończyły się (`stop`) co najmniej 3-krotnym niepowodzeniem (`status` = 'B'), przy czym status 'U' zadania nie jest brany w ogóle pod uwagę. Raport musi zawierać: nazwę zadania ( `name`), ile razy się nie udał , ostatni udany (`id`), ostatni nieudany(`id`) Proste wyszukiwanie poprzez wyciągnięcie wszystkich możliwych nazw i późniejszą iterację (w PHP ) po wszystkich rekordach o danym `name` jest lekko nieefektywne ze względu na ok 1 mln rekordów w tabeli - codziennie pojawia się ok 5000 nowych. Typ silnika i indexy mogę dowolnie zmieniać. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
A nie prościej przez group by...? Trochę zagmatwałeś - np. nie wiem, w jaki sposób mamy rozróżnić na podstawie podanych przez Ciebie danych, ile razy wystąpiło niepowodzenie?
|
|
|
|
leon1313 optymalny algorytm wyszukiwania 25.05.2009, 21:26:34
heaven Tu masz rozwiązanie
[SQL] pobierz, plaintext SELE... 27.05.2009, 10:45:07
leon1313 Sprawdzę jutro na tabeli i zapodam wynik.
Obecnie ... 27.05.2009, 17:35:33 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 14:01 |