Voor mijn werk heb ik een prachtig personeelsmanagementsysteem gebouwd. Aangezien ik er tussendoor (devven is niet mijn hoofdtaak) mee bezig ben geweest heb ik besloten om het maar in Access te gaan maken.
Nu is Access best leuk, maar die Jet engine maakt me een beetje bang. Waarom?
Aan de personeelsregistratie zit ook een werkdagenplanning gekoppeld. Elke shift dat een werknemer werkt is een record. Nu werken er zo'n 200 man bij ons bedrijf, die elk ongeveer 3 shifts per week draaien. Dit komt dan neer op een recordgroei van 200 * 3 * 52 = 31200 records per jaar. Tel daar nog verlofdagen (deze worden ook geregistreerd) bij op en mijn schatting is 40000 records.
Vanuit deze werkdagenplanning wordt er voor een bepaalde shift een planning op papier gedestilleerd. Dit gebeurt mbv een aantal flinke queries met subselects.
Dit is de vereenvoudigde versie van de query, irl gaat er nog een query overheen met een TOP 6 predikaat.
Nu draait alles nog snel genoeg, maar ik heb bange vermoedens voor de toekomst. Kan Jet tabellen van deze grootte aan? Gaan forse queries zoals hierboven niet buitengewoon veel tijd kosten? Op dit moment zal het aantal concurrent users niet hoger worden dan 4, dus voor zover ik verwacht zal dat niet voor problemen gaan zorgen. Ook de andere tabellen blijven qua grootte binnen de perken, alleen deze tabel verstoort m'n nachtrust.
Wellicht hebben andere Tweakers ervaring met grote tabellen binnen Access, of oplossingen om problemen te omzeilen. Ikzelf denk aan het verplaatsen van records die in het verleden liggen naar een soort van archief tabel. Dan zou de grootte van de tabel beperkt kunnen blijven tot 20.000 records.
Nu is Access best leuk, maar die Jet engine maakt me een beetje bang. Waarom?
Aan de personeelsregistratie zit ook een werkdagenplanning gekoppeld. Elke shift dat een werknemer werkt is een record. Nu werken er zo'n 200 man bij ons bedrijf, die elk ongeveer 3 shifts per week draaien. Dit komt dan neer op een recordgroei van 200 * 3 * 52 = 31200 records per jaar. Tel daar nog verlofdagen (deze worden ook geregistreerd) bij op en mijn schatting is 40000 records.
Vanuit deze werkdagenplanning wordt er voor een bepaalde shift een planning op papier gedestilleerd. Dit gebeurt mbv een aantal flinke queries met subselects.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| SELECT a.Achternaam, a,Voornaam FROM Agent a, Planning p WHERE a.AgentID NOT IN( SELECT AgentID FROM Ziekte WHERE [Datum waarvoor planning wordt gemaakt] BETWEEN Startdatum AND Einddatum) AND a.AgentID NOT IN( SELECT AgentID FROM Afwezig WHERE [Datum waarvoor planning wordt gemaakt] BETWEEN Startdatum AND Einddatum) AND p.Datum = [Datum waarvoor planning wordt gemaakt] AND p.Shift = [Shift waarvoor planning wordt gemaakt] AND a.StatusAgentID <> 0 AND p.Status = 1; |
Dit is de vereenvoudigde versie van de query, irl gaat er nog een query overheen met een TOP 6 predikaat.
Nu draait alles nog snel genoeg, maar ik heb bange vermoedens voor de toekomst. Kan Jet tabellen van deze grootte aan? Gaan forse queries zoals hierboven niet buitengewoon veel tijd kosten? Op dit moment zal het aantal concurrent users niet hoger worden dan 4, dus voor zover ik verwacht zal dat niet voor problemen gaan zorgen. Ook de andere tabellen blijven qua grootte binnen de perken, alleen deze tabel verstoort m'n nachtrust.
Wellicht hebben andere Tweakers ervaring met grote tabellen binnen Access, of oplossingen om problemen te omzeilen. Ikzelf denk aan het verplaatsen van records die in het verleden liggen naar een soort van archief tabel. Dan zou de grootte van de tabel beperkt kunnen blijven tot 20.000 records.