La nostra azienda ha implementato un sistema di calendario alcuni mesi fa con appuntamenti ricorrenti, utilizzando le stringhe iCal per memorizzare i criteri di appuntamento ricorrenti.
Stiamo iniziando a riscontrare problemi di prestazioni a causa di questi.
Il nostro pensiero attuale è qualcosa di simile ...
Un utente richiede tutti gli appuntamenti per un intervallo di date. In genere non più di 30 giorni.
Prendiamo tutti gli eventi non ricorrenti dal database che rientrano in questo intervallo di date.
Quindi prendiamo TUTTI gli eventi che contengono una stringa iCal e li eseguiamo attraverso un processore per determinare se l'evento si ripete nel nostro intervallo di date richiesto. Ad esempio, l'utente potrebbe avere l'evento che inizia l'1/1/14, che si ripete ogni martedì e mercoledì in corso per sempre. Un altro evento, tuttavia, può iniziare l'1/1/14, ripetendo ogni martedì e mercoledì per un mese ed è ora al di fuori della nostra gamma selezionata. Il primo si ripeterà al nostro intervallo di date e sarà incluso. Il secondo non lo farebbe.
Per quanto posso dire, non c'è davvero un buon modo per determinare alcun tipo di filtro in modo da non dover estrarre ognuno di questi eventi dal database e testarli per vedere se corrispondono il nostro intervallo di date.
Man mano che il numero di eventi ricorrenti aumenta, il nostro database viene rallentato con richieste che restituiscono sempre più record e il nostro server deve elaborare ognuno di questi, molti dei quali non sono necessari, ma non sappiamo fino a quando non li raggiungiamo sul server e li elaboriamo.
Qualcuno l'ha già affrontato prima, e c'è un algoritmo migliore che possiamo implementare per limitare il numero di record restituiti?