Performanceproblem mit "where column in (subselect)"

17/09/2007 - 09:56 von Achim Domma | Report spam
Hallo,

ich habe ein Statement mit folgendem where-Statement:

... where articles.ISSN='1524-4628'

Die Abfrage làuft quasi in Nullzeit. Ändere ich das where-Statement
wie folgt, braucht die Abfrage fast eine Minute:

... where articles.ISSN='1524-4628' or articles.ISSN in (select
SubIssn from DL_IssnMapping where MainIssn='1524-4628')

Das Subselect liefert ebenfalls in quasi Nullzeit max. 1-2 Eintràge
zurück, teilweise sogar keinen. Warum wird das Statement dadurch so
langsam? Wie kann ich das schneller machen?

Gruß,
Achim
 

Lesen sie die antworten

#1 Peter Doering
17/09/2007 - 10:49 | Warnen spam
Hallo,

Achim Domma wrote:

ich habe ein Statement mit folgendem where-Statement:

... where articles.ISSN='1524-4628'

Die Abfrage làuft quasi in Nullzeit. Ändere ich das where-Statement
wie folgt, braucht die Abfrage fast eine Minute:

... where articles.ISSN='1524-4628' or articles.ISSN in (select
SubIssn from DL_IssnMapping where MainIssn='1524-4628')

Das Subselect liefert ebenfalls in quasi Nullzeit max. 1-2 Eintràge
zurück, teilweise sogar keinen. Warum wird das Statement dadurch so
langsam? Wie kann ich das schneller machen?



Schon im Profiler geschaut?

Folgende Felder muessen indiziert sein:

- articles.ISSN
- DL_IssnMapping.MainIssn

Ausserdem hast du den Subselect nicht abgrenzt. Probier mal so:

where articles.ISSN='1524-4628'
or articles.ISSN in
(select SubIssn
from DL_IssnMapping
where MainIssn=articles.ISSN)

Gruss - Peter

Ähnliche fragen