Dani: SQL Befehl optimieren

SELECT SENR, MGNR, Etage, Raum, Art, HKArt, FaktorKGes, GeraeteNr
FROM aemessgeraet
Inner Join aenutzer on aemessgeraet.nutzerid = aenutzer.id
where nutzerid in (select id from aenutzer WHERE SENR in (select Servicenummer from TourenplanAnlagen Where TourID=43))

Hallo,

wie könnt man denn diesen SQL-Befehl optimieren. Das dauert fast 10s, wenn händlich ich den Verschachtelten SQL Befehl weglass und statt dessen die Werte reinschreib gehts in weniger wie 1 Sekunde

...where nutzerid in (7000, 7001, 7002...)

  1. Hallo,

    SELECT SENR, MGNR, Etage, Raum, Art, HKArt, FaktorKGes, GeraeteNr
    FROM aemessgeraet
    Inner Join aenutzer on aemessgeraet.nutzerid = aenutzer.id
    where nutzerid in (select id from aenutzer WHERE SENR in (select Servicenummer from TourenplanAnlagen Where TourID=43))

    wie könnt man denn diesen SQL-Befehl optimieren. Das dauert fast 10s, wenn händlich ich den Verschachtelten SQL Befehl weglass und statt dessen die Werte reinschreib gehts in weniger wie 1 Sekunde

    Nachdem SENR bereits Bestandteil der Abfrage ist, macht es imho wenig Sinn nochmals eine Abfrage von aenutzer zwischen zu schalten.

    SELECT SENR, MGNR, Etage, Raum, Art, HKArt, FaktorKGes, GeraeteNr
      FROM aemessgeraet
     Inner Join aenutzer on aemessgeraet.nutzerid = aenutzer.id
     where SENR in (select Servicenummer from TourenplanAnlagen Where TourID=43)

    sollte es also auch tun.

    Zusätzlich solltest Du den Ausführungsplan überprüfen, der Dir eventuelle Schwachstellen im Datenmodell (z.B. fehlende Indizes usw.) aufzeigen kann.

    Grüße
      Klaus

    1. Ups, hab ich ja voll übersehen! Danke läuft jetzt in weniger wie 1s!