Ik werk net 2 weekjes met toad/SQL, heb helaas alleen select rechten, geen handleiding, krijg voorlopig ook geen cursus, maar wel een standaard Oracle boek (helaas engels) om het zelf te leren. Maar het is leuk werk dus ach we proberen het.
Sorry als ik allemaal domme vragen stel.
Wat is de beste manier om snelheid hoog te houden subqueries of hulptabellen?
Het valt me op dat er nogal eens verschillen in opvraagtijden kunnen optreden tot wel vele minuten (db bevat div tabellen van 20.000.000 records).
Type ik te zoeken waarde in een select statement, geen probleem binnen 1 sec, de bijbehorende regel.
bv select A,B,C from X where A=1
Maar daar heb ik dus geen zin in want het gaat soms om een behoorlijk aantal uit te zoeken dingen.
Dus ik dacht slim te zijn door hem te verwijzen naar "tabel.veld" of een subquerie.
Maar dan lopen de tijden dus echt drastisch op.
bv
Select naam, adres, woonpl
From NAW, probleemgevallen
Where naam in (probleemgevallen.veld)
of een
Select naam, adres, woonpl
From NAW
Where naam in
(
Select naam
From probleemgevallen
Where typefout = '1'
)
Soms heb ik pech en moet ik eerst de waarde geschikt maken om mee te zoeken/koppelen. Bv door hem met een substr(probleemgevallen,27,8) uit een tekstveld regel te knippen, "Er is een fout opgetreden met 123456789".
Soms moet ik daar ook nog to_char of een to_number over heen gooien en dat soort grappen kosten je vaak je aanwezige indexen heb ik gehoord.
Maar goed om op de vraag terug te komen.
Is het slimmer om met een eerste selectie de waarden te knippen/converteren en in een aparte tussentabel neer zetten en dan een tweede selectie en in die where te verwijzen naar alle waarden in de hulptabel1.helpveld1 uit querie 1?
Of is het gebruik van subqueries juist aan te raden/sneller?
Of is er een derde betere manier?
En nu we toch bezig zijn.
Vandaag probeerde ik mijn eerste join aan te leggen met de
select tabel1.veld, tabel2.probleemgevallen
from tabel1, tabel2
where tabel1.veld = substr(tabel2.probleemgevallen,27,8) die heb ik na 15 minuten draaitijd maar gekild.
Een andere poging met
select a, b, c
from Tabel1 LEFT JOIN Tabel2 ON Tabel1.veld = Tabel2.veld
where x=y
Werd niet geaccepteerd terwijl dit volgens mij toch goed moet zijn. Velden waren allebei numeriek (10)
De LEFT JOIN kan ook INNER JOIN geweest zijn. Ik doe dit nu uit mijn hoofd, maar ik heb 1 uur besteed aan alle varianten en combies. Uiteindelijk heb ik het maar opgegegeven tot morgen. Ik ga nu
Sorry als ik allemaal domme vragen stel.
Wat is de beste manier om snelheid hoog te houden subqueries of hulptabellen?
Het valt me op dat er nogal eens verschillen in opvraagtijden kunnen optreden tot wel vele minuten (db bevat div tabellen van 20.000.000 records).
Type ik te zoeken waarde in een select statement, geen probleem binnen 1 sec, de bijbehorende regel.
bv select A,B,C from X where A=1
Maar daar heb ik dus geen zin in want het gaat soms om een behoorlijk aantal uit te zoeken dingen.
Dus ik dacht slim te zijn door hem te verwijzen naar "tabel.veld" of een subquerie.
Maar dan lopen de tijden dus echt drastisch op.
bv
Select naam, adres, woonpl
From NAW, probleemgevallen
Where naam in (probleemgevallen.veld)
of een
Select naam, adres, woonpl
From NAW
Where naam in
(
Select naam
From probleemgevallen
Where typefout = '1'
)
Soms heb ik pech en moet ik eerst de waarde geschikt maken om mee te zoeken/koppelen. Bv door hem met een substr(probleemgevallen,27,8) uit een tekstveld regel te knippen, "Er is een fout opgetreden met 123456789".
Soms moet ik daar ook nog to_char of een to_number over heen gooien en dat soort grappen kosten je vaak je aanwezige indexen heb ik gehoord.
Maar goed om op de vraag terug te komen.
Is het slimmer om met een eerste selectie de waarden te knippen/converteren en in een aparte tussentabel neer zetten en dan een tweede selectie en in die where te verwijzen naar alle waarden in de hulptabel1.helpveld1 uit querie 1?
Of is het gebruik van subqueries juist aan te raden/sneller?
Of is er een derde betere manier?
En nu we toch bezig zijn.
Vandaag probeerde ik mijn eerste join aan te leggen met de
select tabel1.veld, tabel2.probleemgevallen
from tabel1, tabel2
where tabel1.veld = substr(tabel2.probleemgevallen,27,8) die heb ik na 15 minuten draaitijd maar gekild.
Een andere poging met
select a, b, c
from Tabel1 LEFT JOIN Tabel2 ON Tabel1.veld = Tabel2.veld
where x=y
Werd niet geaccepteerd terwijl dit volgens mij toch goed moet zijn. Velden waren allebei numeriek (10)
De LEFT JOIN kan ook INNER JOIN geweest zijn. Ik doe dit nu uit mijn hoofd, maar ik heb 1 uur besteed aan alle varianten en combies. Uiteindelijk heb ik het maar opgegegeven tot morgen. Ik ga nu



"I don't have any solution but I certainly admire the problem." -- Ashleigh Brilliant