Toon posts:

[php/mysql]Trage query door join?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende query:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT DISTINCT 
   producten.id_prod,
   producten.naam,
   producten.nieuw_gebruikt,
   producten.omschrijving,
   producten.foto,
   producten.verkoopprijs,
   producten.id_cat,
   producten.status 
FROM 
   producten,
   data_ps 
WHERE 
   data_ps.id_prod=producten.id_prod 
   AND nieuw_gebruikt='n' 
   AND data_ps.bouwjaar='1995' 
   OR data_ps.bouwjaar='0000' 
   AND status='j'


Helaas wordt deze enorm traag uitgevoerd. Ik heb al de nodige indices aangelegd, maar nog duurt het ongeveer een halve minuut. Te lang dus.

data_ps bevat ongeveer 2500 records en producten een stuk of 200.

Wat doe ik verkeerd en hoe zou ik hem sneller kunnen krijgen?

edit by drm
ff code wat gestyled. Volgende keer zelf doen ;)

[ Voor 0% gewijzigd door drm op 14-10-2002 16:30 ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Welke indexen zijn dat dan, die je gezet hebt?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • bras
  • Registratie: Oktober 2000
  • Laatst online: 13-08 14:08
Wat ik uit eigen ervaringen heb begrepen is dat de or verschrikkelijk traag is. Ik heb hier zelf een temp table voor gebruikt om dit te omzeilen, (brakke methode >:))

"When you find yourself in the company of a halfling and an ill-tempered Dragon, remember, you do not have to outrun the Dragon...you just have to outrun the halfling."


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

bras:
Wat ik uit eigen ervaringen heb begrepen is dat de or verschrikkelijk traag is. Ik heb hier zelf een temp table voor gebruikt om dit te omzeilen, (brakke methode >:))

In dat geval heb je kans dat je met IN een stuk sneller bent:

code:
1
2
SELECT [snip] WHERE [snip] 
   AND bouwjaar IN ('0000','1995')

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Ik heb hem al:
Ik heb
data_ps.bouwjaar='1995'
OR data_ps.bouwjaar='0000'

even tussen haakjes gezet en dan gaat hij als een trein. Bedankt.

Verwijderd

Niet alleen zou dat sneller moeten gaan, maar je krijgt ook niet de goede resultaten als je die haakjes weglaat, want je krijgt alle records terug die bouwjaar '0000' hebben, ongeacht of de record aan de andere voorwaarden voldoet. Vandaar dat het waarschijnlijk een stuk sneller gaat -- je krijgt minder records terug.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

daar dacht ik ook pas aan toen ik mijn 'IN' post poste :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
jep klopt. Een stuk minder. Vorige klopte niks van eigenlijk.

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

drm schreef op 14 oktober 2002 @ 16:39:
In dat geval heb je kans dat je met IN een stuk sneller bent:
Een IN wordt, afaik, intern vertaald naar OR statements.

offtopic:
maar voor dit specifieke geval heb je iig wel gelijk dat het sneller is ;)

Today's subliminal thought is:

Pagina: 1