sqlserveristmeintod 0 Geschrieben vor 7 Stunden Melden Geschrieben vor 7 Stunden Hallo zusammen, ich habe ein Performance-Problem mit einer View in SQL Server (Version: SQL Server 2019 Standard). Problem: Wenn ich eine gezielte Abfrage auf den View mache, also das Select unterhalb des Alters markiere und ausführe läuft dieser in <10 Sekunden durch. Mache ich jedoch: Select * from dbo.view läuft diese Anfrage nicht durch. Ich habe schon geprüft: Statistiken aktualisiert (UPDATE STATISTICS sowohl auf der View als auch auf den zugrunde liegenden Tabellen) Rebuild/Reorganize der Indizes auf allen relevanten Tabellen Execution Plan geprüft – die Pläne unterscheiden sich stark zwischen SELECT * und gezieltem SELECT Kein Problem mit Berechtigungen oder Schemakonflikten Details zur View: Die View referenziert ca. 6 Tabellen über mehrere JOINs Keine Funktionen wie TOP, ORDER BY, DISTINCT in der View Die View wird nicht geschachtelt verwendet In der View werden keine * verwendet – also im View-Code steht explizit jede Spalte Ich bin mit meinem Latein am Ende, ich habe alle Tricks schon probiert, komme hier aber nicht mehr weiter. Ich bin für jede konstruktive Idee dankbar! Danke euch! Zitieren
NilsK 2.996 Geschrieben vor 7 Stunden Melden Geschrieben vor 7 Stunden (bearbeitet) Moin, willkommen an Board! Ohne Informationen zu den Daten und zu der Definition der View wird es schwierig, zu deiner Frage etwas Sinnvolles zu sagen. So ist völlig schleierhaft, was vor 14 Minuten schrieb sqlserveristmeintod: also das Select unterhalb des Alters heißen könnte. Was heißt denn überhaupt "läuft diese Anfrage nicht durch"? Was passiert? Gruß, Nils bearbeitet vor 7 Stunden von NilsK Zitieren
mwiederkehr 390 Geschrieben vor 6 Stunden Melden Geschrieben vor 6 Stunden Verwendest Du Funktionen wie ROW_NUMBER() oder Aggregatfunktionen? Vergleiche mal die Ausführungspläne. Bei Views erfolgt die Filterung erst am Schluss. Mit ROW_NUMBER() würden also alle Datensätze aufgezählt und erst danach gefiltert. Führst Du die Abfrage direkt aus, filtert der SQL Server zuerst und wendet die Funktionen erst dann an. Für Deine Anforderung eignet sich allenfalls eine Tabellenwertfunktion. Zitieren
t-sql 22 Geschrieben vor 4 Stunden Melden Geschrieben vor 4 Stunden Kannst Du mal den View hier einstellen? Bekommst Du eine Fehlermeldung? Zitieren
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.