🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
5 messages
5 total messages Started by Passero Wed, 01 Oct 2003 13:34
query probleem
#3905
Author: Passero
Date: Wed, 01 Oct 2003 13:34
15 lines
1994 bytes
Telkens wanneer ik onderstaande query wil uitvoeren loopt mijn pc vast. Ik
heb al geprobeerd in VB6 door het in de recordsource te zetten van een ADODC
en in een DB programma van mysql voor query's. Mijn computer loopt gewoon
vast en ik kan niet anders doen dan een reset. Nogtans klopt de query want
enkel als ik de access equivalant van de DB gebruik en de query in access
uitvoer lukt het. In mysql met een mysql db niet dus. Weet iemand raad?

Hier de query:

SELECT DISTINCTROW REPERTORIUM.ZAAKNR, REPERTORIUM.HOEDANIGHEID,
AKTEN.REPNR, AKTEN.AARD, AKTEN.ONDERWERP, KLANTEN.FAMNAAM, KLANTEN.VOORNAAM,
KLANTEN.VOLGNR_AKTE, KLANTEN.ALLEEN_OF_SAMEN FROM (AKTEN INNER JOIN
REPERTORIUM ON AKTEN.ZAAKNR = REPERTORIUM.ZAAKNR) INNER JOIN KLANTEN ON
REPERTORIUM.KLANTNR = KLANTEN.KLANTNR ORDER BY REPERTORIUM.ZAAKNR,
KLANTEN.VOLGNR_AKTE
Re: query probleem
#3906
Author: Sjoerd Schreuder
Date: Wed, 01 Oct 2003 13:56
41 lines
3111 bytes
Passero wrote:
> 
> Telkens wanneer ik onderstaande query wil uitvoeren loopt mijn pc vast. Ik
> heb al geprobeerd in VB6 door het in de recordsource te zetten van een ADODC
> en in een DB programma van mysql voor query's. Mijn computer loopt gewoon
> vast en ik kan niet anders doen dan een reset. Nogtans klopt de query want
> enkel als ik de access equivalant van de DB gebruik en de query in access
> uitvoer lukt het. In mysql met een mysql db niet dus. Weet iemand raad?

Weet je zeker dat je computer "vast loopt", of is hij gewoon erg lang
bezig met het uitrekenen van de resultaten? Je doet een join over drie
tabellen. Als je geen indices hebt, kan dat errug lang duren.

Dus: welke indices heb je staan? Indices op de PKs is bijna
verplicht. Indices op de FKs kan in een aantal gevallen ook
helpen, afhankelijk van hoe de aanpak van je query is.

Verder zou je een "SELECT COUNT(1) FROM ..." kunnen doen om te kijken
hoeveel resultaten je hebt. En dan geen DISTINCT of ORDER BY, want dat
kost alleen maar extra tijd. Bij grotere aantallen ligt het voor de hand
dat je query een boel tijd nodig heeft.

> Hier de query:
> 
> SELECT DISTINCTROW REPERTORIUM.ZAAKNR, REPERTORIUM.HOEDANIGHEID,
> AKTEN.REPNR, AKTEN.AARD, AKTEN.ONDERWERP, KLANTEN.FAMNAAM, KLANTEN.VOORNAAM,
> KLANTEN.VOLGNR_AKTE, KLANTEN.ALLEEN_OF_SAMEN FROM (AKTEN INNER JOIN
> REPERTORIUM ON AKTEN.ZAAKNR = REPERTORIUM.ZAAKNR) INNER JOIN KLANTEN ON
> REPERTORIUM.KLANTNR = KLANTEN.KLANTNR ORDER BY REPERTORIUM.ZAAKNR,
> KLANTEN.VOLGNR_AKTE

Ziet er normaal uit. Is die DISTINCTROW echt nodig?

Je zou de inner joins impliciet kunnen maken:
FROM AKTEN, REPERTORIUM, KLANTEN
WHERE AKTEN.ZAAKNR = REPERTORIUM.ZAAKNR
  AND REPERTORIUM.KLANTNR = KLANTEN.KLANTNR
Dat is waarschijnlijk makkelijker te optimaliseren. Maar ik denk niet
dat het daaraan ligt.

Sjoerd Schreuder
Re: query probleem
#3907
Author: Passero
Date: Wed, 01 Oct 2003 14:30
20 lines
2148 bytes
"Sjoerd Schreuder" <sa_schreuder@wanadoo.nl> schreef in bericht
news:3F7ADCF6.5459EB8E@wanadoo.nl...

>
> Weet je zeker dat je computer "vast loopt", of is hij gewoon erg lang
> bezig met het uitrekenen van de resultaten? Je doet een join over drie
> tabellen. Als je geen indices hebt, kan dat errug lang duren.
>
> Dus: welke indices heb je staan? Indices op de PKs is bijna
> verplicht. Indices op de FKs kan in een aantal gevallen ook
> helpen, afhankelijk van hoe de aanpak van je query is.
>
> Verder zou je een "SELECT COUNT(1) FROM ..." kunnen doen om te kijken
> hoeveel resultaten je hebt. En dan geen DISTINCT of ORDER BY, want dat
> kost alleen maar extra tijd. Bij grotere aantallen ligt het voor de hand
> dat je query een boel tijd nodig heeft.
>

Hoe komt het dan dat access er niet lang over doet, hij doet het direct?
Re: query probleem
#3908
Author: Passero
Date: Wed, 01 Oct 2003 14:41
3 lines
1395 bytes
Indices gemaakt (die waren er dus nog niet) en nu gaat het heel vlot. Moet
zelf niet meer wachten.
Bedankt!
Re: query probleem
#3909
Author: Roel Schroeven
Date: Wed, 01 Oct 2003 14:47
30 lines
2342 bytes
On Wed, 01 Oct 2003 16:30:45 +0200, Passero wrote:


> "Sjoerd Schreuder" <sa_schreuder@wanadoo.nl> schreef in bericht
> news:3F7ADCF6.5459EB8E@wanadoo.nl...
> 
> 
>> Weet je zeker dat je computer "vast loopt", of is hij gewoon erg lang
>> bezig met het uitrekenen van de resultaten? Je doet een join over drie
>> tabellen. Als je geen indices hebt, kan dat errug lang duren.
>>
>> Dus: welke indices heb je staan? Indices op de PKs is bijna verplicht.
>> Indices op de FKs kan in een aantal gevallen ook helpen, afhankelijk
>> van hoe de aanpak van je query is.
>>
>> Verder zou je een "SELECT COUNT(1) FROM ..." kunnen doen om te kijken
>> hoeveel resultaten je hebt. En dan geen DISTINCT of ORDER BY, want dat
>> kost alleen maar extra tijd. Bij grotere aantallen ligt het voor de
>> hand dat je query een boel tijd nodig heeft.
>>
>>
> Hoe komt het dan dat access er niet lang over doet, hij doet het
direct?

Wilde gok: misschien heb je in Access wel de nodige indexen, maar in
Mysql niet?

-- 
"Codito ergo sum"
Roel Schroeven
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads