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ć. |
|
|
|
leon1313 optymalny algorytm wyszukiwania 25.05.2009, 21:26:34
erix A nie prościej przez group by...? Trochę zagmatwał... 26.05.2009, 17:18:54
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: 24.12.2025 - 22:31 |