database sneller maken

Status
Niet open voor verdere reacties.

jwaque

Verenigingslid
Lid geworden
16 aug 2006
Berichten
443
Ik heb een database gemaakt met enorm veel records (4959539 records). Nu was de db grootte >1GB. door comprimeren heb ik dit weer kunnen verkleinen (dank aan dit forum). Maar de snelheid is niet toegenomen. Het maken van een rapport duurt ruim 7 minuten (en soms langer).

Hebben jullie tips om de snelheid te verbeteren? mijn ideeen maar die werken tot nu toe niet echt.
Kleinere tabellen maken (een afdeling 622402 records)
restulaten van query's naar tabel schrijven en dan pas rapport maken.
geen sub rapporten gebruiken.
 
Je zou nog eens naar de indexen kunnen kijken van de tabellen, daar valt misschien nog winst te behalen. Als je zoveel records hebt, is het misschien zinvol om een Historie db aan te maken en te koppelen. Als je van die 4959539 records er eigenlijk maar 959539 echt vaak nodig hebt, kun je er 4000000 uithalen, en verplaatsen naar de historie db. Als je daarin een exacte kopie maakt van de tabelstructuur, met achter alle tabelnamen _historie, dan kun je op je hoofdformulier met een simpel selectieveldje de formulieren koppelen aan de historietabel, door de Recordbron te veranderen. Voorbeeldje: als je factuurtabel tFacturen heet, en je historietabel tFacturen_historie, dan hoef je alleen de recordbron van het formulier te veranderen tussen tFacturen_historie en tFacturen en je kunt je oude records bekijken.
 
helaas heb ik alle data ook echt nodig al zou ik het kunnen splitsen in verschillende afdelingen.
Ik ben nog niet zo thuis in het indexen. Ik probeer nu een primary key toe te voegen met bv een autonumber veld maar dan krijg ik de volgende error. Enig idee wat ik daarmee kan?

Ik probeer ook mijn patnr of artnr te indexen maar ook dan krijg ik een error. Kan het indexen alleen bij het inladen van een tabel? (tabel is ingeladen vanuit tekstvelden) las dat er ook winst te behalen valt in het passend maken van de veldgrootte maar ook dit lukt niet.

File sharing lock count exceeded. Increase MaxLocksPerFile registry entry. (Error 3052)
You have exceeded the maximum number of locks allowed on a recordset. This limit is specified by the MaxLocksPerFile setting in your system registry. The default value is 9500, and can be changed either by editing the registry with Regedit.exe or with the SetOption method.

Some other factors that may cause an application to reach this threshold include the following:

amount of available memory
size of rows in the recordset
network operating system restrictions
 
Een nieuw autonummerveld toevoegen aan een tabel waar al een autonummerveld in zit, zal überhaupt niet gaan, want je mag er maar één gebruiken. Indexen stel je in op tabelniveau. Gebruik je een Frontend + Backend, dan moet je de indexen instellen in de backend. Het zou kunnen dat er teveel indexen in de tabel staan; dat vertraagt overigens de database ook aanzienlijk. Je moet eigenlijk alleen indexen gebruiken op velden waarop dat zinvol is, zoals plaatsnamen etc. Dus waarden waarvan er meerdere voorkomen in een database. Heb je hier al gekeken?
 
En ook (iets uitgebreider) in het engels:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan