Witam! Od niedawna borykam się z problemem, że zbyt długo czekam na odpowiedź od bazy danych, gdyż prawdopodobnie moja funkcja nie jest zoptymalizowana. Mój problem wygląda tak, że:
Teraz robię to tak i nie wiem czy istnieje może jakiś bardziej wyrafinowany sposób na to rozwiązanie:
Mam tabelę kontraktów z pracownikami, tj. Id pracownik, data startu kontraktu, data końca kontraktu.
Następna tabela to wakacje dla pracowników i ona również zawiera id pracownika, data startu wakacji i końca wakacji pracownika ( urlopu ).
Teraz dla każdego dnia w roku muszę znaleźć ile pracowników będzie danego dnia w pracy.
No i zrobiłem to tak, że utworzyłem sobie kursor z danymi z kontraktami i w pętli dla każdego ID pracownika biorę jego datę rozpoczęcia kontraktu i do nowej tabeli wstawiam wiersze z ID, Dzien, i tak aż do daty końca kontraktu.
Po utworzeniu już takowej tabelki, robię to samo tylko, że teraz dla tabeli z wakacjami, też rozdzielam na dni dla każdego pracownika.
Następnie od tabelki z rozdzielonymi dniami dla kontraktów odejmuje te z wakacjami. I na końcu grupuje wg. dnia i count'em zliczam ilość pracowników.
Może ktoś miał podobny problem lub można to z czymś porównać, jakoś przyśpieszyć? Każda odpowiedź będzie cenna