Uitvoeren queries, switchen tussen weergaven traag

Status
Niet open voor verdere reacties.

VBAJAAP

Gebruiker
Lid geworden
14 aug 2013
Berichten
46
Beste Lezers,

Ik ben bij het bouwen van een database tegen een raar dingetje aangelopen. Bij het ontwerpen ervan en het uitvoeren van queries is deze bij bepaalde Formulieren/Rapporten ineens zeer traag geworden; echt van het ene op het andere moment. Hierbij moet ik opmerken dat ik de database met records aan het vullen ben . Weet iemand een slimme aanpak om te kijken waar deze traagheid ineens vandaan komt.

De formulieren waarbij het optreedt bevatten geen heel ingewikkelde code/queries.

BVD en MVGR

Jaap
 
Deze vraag is zo te vaag; sowieso hebben we de queries nodig om te zien of er rare dingen in zitten, en daarnaast eigenlijk ook de tabellen. Kortom: de database :). Snelheid kan bijvoorbeeld komen door de manier waarop de query is opgebouwd, maar ook door (het ontbreken van) de indexen.
 
Beste Octafish,

Ik was al een beetje bang voor dit antwoord. Het probleem is echter dat mijn database inmiddels zakelijke records bevat. Anonimiseren hiervan zal wellicht een aantal factoren veranderen, zodat ik hiermee niet gericht kan troubleshooten. Toch denk ik dat het stellen van de vraag nuttig was, aangezien je me wellicht enigszins op het spoor hebt gebracht met het aanmaken van een index. Heb je wellicht een tip/link voor meer info hierover.

Daarbij wil ik nog opmerken dat de extreme traagheid eigenlijk alleen optreedt bij rapporten/formulieren gebaseerd op een bepaalde tabel. Klinkt dit enigszins als een index kwestie !?!?!??

Groet,

Jaap.
 
Formulieren/rapporten kunnen ook traag worden als er veel afbeeldingen opgehaald moeten worden, zeker als die op een netwerk staan. Als je het rapport/formulier letterlijk op een tabel hebt gebaseerd, zou de snelheid van de tabel ook terug moeten komen in het formulier of rapport. Waarschijnlijker is dus dat je er toch een query onder gebruikt, of op het formulier/rapport een sortering toepast die afwijkt van die van de tabel.
Maar begin eens met de indexen van je onderliggende tabel(len) te bekijken, daar is wellicht al het een en ander aan winst te behalen.
Wat doet een index? Niet veel meer dan op de achtergrond je gegevens paraat zetten in een bepaalde volgorde. Voorbeeldje. Als je een hele grote persoonstabel hebt, met een paar honderdduizend records, en er zit in dit tabel geen index, dan kost het sorteren van die tabel op het veld [Plaatsnaam] enorm veel tijd; Access (lees: elke database) moet dan eerst alle records opnieuw in de juiste volgorde zetten voordat je de records kunt bekijken. Maak je nu een index op het veld Plaatsnaam, dan maakt Access die sortering al gelijk. Op de achtergrond wordt dan a.h.w. een lijst gemaakt van de sleutelvelden in de volgorde van het veld [Plaatsnaam]. Gevolg: als je nu sorteert op [Plaatsnaam] staat de lijst in no-time op het scherm.
Dat is dus ook de reden dat elke tabel mét een unieke sleutel redelijk snel opent, want dat sleutelveld is per definitie ook altijd geïndexeerd. Je kunt per tabel aangeven op welke velden je wilt indexeren, waarbij je in het achterhoofd moet houden dat meer in dit geval niet altijd beter is. Het is een heel slecht idee om op alle velden te indexeren; je krijgt dan zoveel indexen dat het effect omslaat en de tabel er weer trager van wordt. Kies dus velden waarvan het handig is om op te sorteren, zoals Postcode, Achternaam, Plaatsnaam etc.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan