Toon posts:

grote UNION langzaam?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende code gemaakt.

SELECT passen.AM001
FROM passen, prsstmr
WHERE prsstmr.ajr012 = passen.am001

UNION

SELECT [PASSEN].[AM001]
FROM PASSEN, bzkstmr
WHERE bzkstmr.AKR012 = PASSEN.am001

UNION SELECT PASSEN.AM001
FROM PASSEN
WHERE (NOT EXISTS (SELECT AJR001 FROM prsstmr WHERE AJR012 = PASSEN.am001)
AND NOT EXISTS (SELECT AKR001 FROM bzkstmr WHERE AKR012 = PASSEN.am001));

Dit werkt wel, maar met een record set van 10000 record wordt het erg traag.
Ze zeggen dat outer join een oplossing is, maar daar weet ik niet zoveel van


Is er iemand die mij kan helpen???

De laatste code heb ik ook al aangepast naar:
SELECT PASSEN.AM001
FROM prsstmr, bzkstmr, passen
WHERE prsstmr.AJR012<>PASSEN.am001 AND bzkstmr.AKR012 <> PASSEN.am001

maar dat levert geen extra snelheid op..... :| :|

HELP ME PLEASE

  • EfBe
  • Registratie: Januari 2000
  • Niet online
'bzkstmr' ?? 'prsstmr' ?? Zo noem je toch geen variabelen, tabels, views of velden!

I smell interbase... ;)

UNION plakt meerdere resultsets aan elkaar, dwz, je voert meerdere queries uit en plakt de resultsets van al die queries aan elkaar. Jij plakt hier 3 queries aan elkaar waarbij telkens dezelfde tabel wordt geraadpleegt, en dat moet je toch aan het denken zetten (dus dat je de where's kunt combineren).

Aangezien de namen dermate cryptic zijn, verlies ik het overzicht snel bij het kijken naar jouw code, dus ik denk dat het verstandig is uit te leggen wat je wilt bereiken, dan wat layout aspecten van de tabellen waar je info uit wilt betrekken zodat we wellicht 1 query kunnen construeren. Nu is het akr012, arj012 etc... lijkt wel obfuscated SQL.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Ik zou het eens met JOINS proberen

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

code:
1
2
3
4
5
SELECT passen.AM001
FROM passen, prsstmr, bzkstmr 
WHERE prsstmr.ajr012 = passen.am001
OR bzkstmr.AKR012 = PASSEN.am001 
OR (prsstmr.AJR012 <> PASSEN.am001 AND bzkstmr.AKR012 <> PASSEN.am001)


Maar is dit niet gewoon hetzelfde als
code:
1
2
SELECT passen.AM001
FROM passen

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op 21 januari 2003 @ 17:29:
Ik zou het eens met JOINS proberen
UNION is verticaal results aan elkaar plakken, JOIN's horizontaal.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 19-08 23:13
Kheb eerlijk gezegd geen zin om na te denken over wat je wil met die query met een aantal unions er in. Misschien is het handig als je zeg wat er in die tabellen staat en wat je terug wil hebben.
Pagina: 1