Was würde den Geschwindigkeitsunterschied zwischen Servern verursachen?
-
16-10-2019 - |
Frage
Ich habe diese Abfrage auf meinem Entwicklerserver:
select
snStudyNumber as ProjectNumber
from CDB.cdb.Quotes q
inner join CDB.cdb.LineItems l
on q.PK_quID=l.FK_quID
inner join CDB.cdb.StudyNumbers s
on l.FK_snID=s.PK_snId
left outer join ardb.projects p
on s.snStudyNumber=p.prProjectNumber
left outer join b
on s.snStudyNumber=b.studynumber
where q.quDateWon>''
and s.snPTWCompletionDate >''
and p.PK_prID is null
and l.liCreationDate>'12/31/06'
and b.studynumber is null
union all
select CAST(ProjectNumber AS int)
from history.ProjectsToProcess a
left outer join ardb.projects p
on a.ProjectNumber=p.prProjectNumber
where p.PK_prID is null
order by ProjectNumber desc
Dies funktionierte bis gestern auf dem Dev -Server in Ordnung. Jetzt dauert es ungefähr 1 1/2 Minuten, um zu laufen. Auf dem Testserver funktioniert es jedoch gut.
Hier ist der seltsame Teil. Wenn ich die Abfrage von Dev so modifizierte, dass eine der linken äußeren Verknüpfungen (entweder eins) herausgenommen wird, würde sie gut laufen (aber der falsche Datensatz). Wenn ich die Join zurück hinzufügte, wurde es wieder verlangsamt.
Auch die Daten zwischen den Servern liegen innerhalb von 90% Ähnlichkeit. Struktur und Menge weise.
Ich habe auch versucht, den Dev -Server neu zu starten, aber das hat das Problem nicht behoben.
Was könnte diese Diskrepanz verursachen? Wo soll ich suchen?
Bearbeiten- OK, also habe ich in den Ausführungsplänen etwas verpasst. Der Testserver (der funktioniert) befindet sich links, der Dev -Server rechts.
Lösung
Klingt so, als ob Ihre Statistiken veraltet sind. Führen Sie die Aktualisierungsstatistiken auf den Tabellen auf dem Server aus und prüfen Sie, ob dies das Problem behebt.