2016-10-20 2 views
0

Ich habe eine Ansicht, die mehr als 100000 Zeilen in 15 Sek. Zurückgeben. Diese Ansicht gibt ein Feld ElementId zurück. Ich habe eine Tabelle Elemente mit einer Primärschlüssel-ID.JOIN zwischen Tabelle und Ansicht ist sehr langsam

SELECT MV.ElementId 
FROM MyView MV 

Meine Abfrage ist sehr langsam (> 4 min), wenn i gelte eine wie dies zwischen dem Blick und der Tisch kommen:

SELECT E.Id 
FROM MyView MV 
INNER JOIN Elements E ON E.Id = MV.ElementId 
WHERE E.CustomerId = @CustomlerId 

Warum die Ausführungszeit zwischen den zwei Abfragen so anders? Wie kann ich die zweite Abfrage optimieren?

Ich benutze SQL Server 2014

+1

Zeigen Sie uns die Sichtdefinition und seine Tabellendefinitionen, inkl Indizes. – jarlh

+1

Haben Sie sich die Exekutionspläne überhaupt angeschaut? sollte Ihre erste Anlaufstelle sein. – Tanner

+2

Klicken Sie mit der rechten Maustaste in den Abfrageeditor und klicken Sie dann auf "Geschätzten Ausführungsplan anzeigen". Dort kannst du die Antwort bekommen. – Sankar

Antwort

-2

Betrachten MV.ElementId Indizierung sowie Elements.CustomerId

0

ist, hängt von vielen Faktoren ab:

1. - tut diese Abfrage für jeden Parameter langsam ist oder nur für einige von ihnen? Wenn diese Abfrage nur für einige von ihnen langsam ist, können Sie versuchen, OPTIMIZE FÜR UKNOWN - https://blogs.msdn.microsoft.com/sqlprogrammability/2008/11/26/optimize-for-unknown-a-little-known-sql-server-2008-feature/

2. - Haben Sie einen Index auf Elemente Tabelle? Wenn nicht, können Sie Clustered-Index für ElementId-Spalte erstellen.

Am besten sein, wenn Sie Ausführungsplan mit uns teilen können.

Grüße!

-1

Optimierung Ihrer Datenbank: 1. tunning Datenbank- und Tabellen 2. erstellen Index in der Tabelle (Test in mysql)