Toon posts:

subqueries

Pagina: 1
Acties:

Verwijderd

Topicstarter
hoe kun je de volgende statement in 2 subqueries maken
want via IN operator duurt het lang om data op te halen

select count(*)
from port
where status = 'In Service'
and capacity = 'E1'
and equipmentid in
(select equipmentid
from equipment
where parentid in
(select equipmentid
from equipment
where sdharea='POI'))

  • dominic
  • Registratie: Juli 2000
  • Laatst online: 21-08 19:07

dominic

will code for food

Misschien van JOIN's gebruikmaken?

Download my music on SoundCloud


  • whoami
  • Registratie: December 2000
  • Laatst online: 31-08 22:34
In jouw geval heb je al een subquery?
Ik zie niet in wat je precies wilt?

Subqueries hebben nu eenmaal de eigenschap dat ze vertragend effect hebben op uw query.

https://fgheysels.github.io/


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Tja.. SQL is niet zo heel erg sterk in hierarchische structuren.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Misschien moet je eens kijken welke indexen je allemaal hebt. Het zou me niets verbazen als daar het probleem zit.

Je kunt onderstaande query in ieder geval even proberen, maar het zou me niet verbazen als weinig helpt. Een IN of NOT IN in combinatie met een subquery is namelijk vaak de snelste oplossing.
code:
1
2
3
4
5
6
7
8
9
10
select count(*)
from port
where status = 'In Service'
and capacity = 'E1'
and equipmentid in
(   select equipmentid
    from equipment e
    join equipment ep on ep.equipmentid = e.parentid
    where ep.sdharea='POI'
)

Never underestimate the power of


Verwijderd

Topicstarter
select count (*)
from port po, equipment eq2, equipment eq1
where eq1.equipmentid = eq2.parentid
and eq2.equipmentid = po.equipmentid
and eq1.sdharea='POI'
and po.capacity = 'E1'

ik geloof dat deze methode eenvoudiger is

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Misschien wel eenvoudiger, maar het is alleen de vraag of je nog het juiste resultaat krijgt.
Of dat zo is, hangt af van je datamodel.
Daarom had ik voor de zekerheid één IN laten staan, zodat de COUNT (*) in ieder geval hetzelfde resultaat oplevert.

Never underestimate the power of


Verwijderd

Topicstarter
resultaat blijft hetzelfde en uitvoer is ietsje sneller. Het probleem is dat het lang duurt omdat er een rapport wordt gegenereerd dmv van queries. Met een sql editor gaat het redelijk snel, maar ik wacht al minuten lang en de rapport komt nog niet tevoorschijn.

Dus ben ik op zoek naar een aanpak waardoor de laadtijd van het rapport korter wordt.

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Verwijderd schreef op 09 oktober 2002 @ 17:41:
resultaat blijft hetzelfde en uitvoer is ietsje sneller.
Ik geloof dat je db-model inderdaad zo in elkaar zit, dat je bij deze query altijd het goede aantal krijgt.

Gebruik je allemaal losse queries? En waarmee is dat rapport gemaakt.
Wordt dat rapport trouwens ooit wel eens zichtbaar als je lang genoeg wacht? Misschien dat het tonen van je rapport een beetje fout gaat.

Never underestimate the power of

Pagina: 1