Toon posts:

[VB] Optimaliseren inlezen vanuit een database

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig een programma te maken waarmee klanten en de bijbehorende contact personen in een database opgeslagen worden. Bij het uitlezen blader je met DATA1. Wanneer je met DATA1 gebladerd heb moet DATA2 aangepast worden, een nieuwe query zodat alleen de contact personen geladen worden die bij het bedrijf horen die met DATA1 geselecteerd zijn.

Dit werkt allemaal prima, maar als ik een groot aantal bedrijven en contact personen ingevoerd heb wordt dit erg traag, is er een manier om dit te versnellen? Ik heb ergens gelezen dat een JOIN zo helpen, maar kan je dit gebruiken met DATA object in VB? En zo ja, hoe doe ik dat dan, zodat het zo snel mogelijk is?

Verwijderd

Wat ik meestal doe is geen standaard shit van VB gebruiken, ik script meestal mijn eigen DB koppeling.

Meestal is deze code stukken schoner:

Set objRs = New ADODB.recordset
sSQL = "................."
objRs.open sSQL, MyCon

En mycon is je connectie

Dit is gewoon heerlijk snel!

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Set db = OpenDatabase(Database)
Dim db As Database
Dim rstInfo As Recordset

With db
Set rstInfo = .OpenRecordset("select * from contacts where clientid=" & MOD_CALL_ADD.Label20.Caption)
With rstInfo
      If Not .EOF Then
    .MoveFirst
     Do While Not .EOF
         List1.AddItem !Name
        .MoveNext
    Loop
    End If
 End With
End With

Zoiets bedoel je, maar dat is nog niet echt snel, is er geen andere manier om het nog sneller te maken, of is dat gewoon het probleem van VB? Denk je dat het sneller wordt als je JOINS gebruikt ipv apparte DB's openen?

Verwijderd

Topicstarter
Die code die ik hierboven heb staan is wel wat sneller als de normalen manier (DATA objects gebruiken). Zou dit nog sneller worden als ik JOINS gebruik?

  • PdeHoog
  • Registratie: December 2001
  • Laatst online: 23-09-2024
Op donderdag 11 april 2002 11:11 schreef DonzigEendje het volgende:
Die code die ik hierboven heb staan is wel wat sneller als de normalen manier (DATA objects gebruiken). Zou dit nog sneller worden als ik JOINS gebruik?
Je kunt JOINS gebruiken. Je moet dan wel wat langer op je data wachten omdat dat stukje langzamer zal worden. Je hebt echter wel gelijk al je data.

Ik weet niet welke database je gebruikt, maar misschien kun je eens naar indices op de tabellen gaan kijken? Access heeft deze mogelijkheid trouwens niet.

Verwijderd

Topicstarter
Dat is jammer, want ik gebruik dus een Access database. Heb je nog andere ideeen, waarmee ik dit kan versnellen.

Verwijderd

Overstappen naar een andere database 8-)

Verwijderd

Topicstarter
Dat is wel een idee, maar in verband met de inrichting van het bedrijf waar dit gebruikt gaat worden moet het persee een Access database zijn.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14:16

Crazy D

I think we should take a look.

Op donderdag 11 april 2002 12:58 schreef PdeHoog het volgende:
Ik weet niet welke database je gebruikt, maar misschien kun je eens naar indices op de tabellen gaan kijken? Access heeft deze mogelijkheid trouwens niet.
? bij mijn weten kun je wel wat indices zetten in een Access db-tje hoor, of ik ben nog erger :z dan ik dacht...

Exact expert nodig?


  • PdeHoog
  • Registratie: December 2001
  • Laatst online: 23-09-2024
Op donderdag 11 april 2002 15:04 schreef Crazy_D het volgende:

[..]

? bij mijn weten kun je wel wat indices zetten in een Access db-tje hoor, of ik ben nog erger :z dan ik dacht...
Heb het effe nagekeken en het klopt! Wist ik niet :). Je kan in het design van een access-tabel bij een veld aangeven of deze indexed is of niet (althans in de XP-versie).

Waarschijnlijk ook wel in de 2000-versie.

Probeer dat eens...

Verwijderd

Als je niet alle velden/kolommen uit de tabel nodig hebt , dan is het ook nog sneller om alleen de kolommen op te geven die je daadwerkelijk nadig hebt, ipv *.
Pagina: 1