Ich habe eine Liste der Newsletter in meiner Website ausgelagert und ich verwende diese Ansicht, um es zu laden.Sql Server 2005 COUNT auf Sicht dauert zu lange
Dies ist die Ansicht (ohne die Liste der Spalten ausgewählt):
SELECT * FROM dbo.NewsletterHistory
INNER JOIN dbo.Newsletter ON dbo.NewsletterHistory.NewsletterId = dbo.Newsletter.NewsletterId
INNER JOIN dbo.sysNewsletterHistoryState ON dbo.NewsletterHistory.sysNewsletterHistoryStateId = dbo.sysNewsletterHistoryState.sysNewsletterHistoryStateId
LEFT JOIN dbo.Client ON dbo.NewsletterHistory.AboutUserId = dbo.Client.ParentUserId
Das Problem erscheint, wenn ich versuche, eine Abfrage der Anzahl, um die ausgelagerten Liste anzuzeigen auszuführen.
In NewsletterHistory Tabelle habe ich etwa 700.000 Zeilen.
select count(*) from dbo.NewsletterHistoryView newsletter0_ where newsletter0_.DeliveryMethod 11
Diese Zählerabfrage dauert etwa 33 Sekunden.
Ich kann diese Anzahl der Datensätze nicht einfach irgendwo speichern, weil die ausgelagerte Liste gefiltert werden kann.
Irgendwelche Ideen zur Lösung dieses Problems?
Welche Indizes haben Sie an Ort und Stelle? – AdaTheDev
Hatten Sie einen Index für Spalten in Joins und wo? –
haben Sie nie über die Verwendung von Index nachgedacht? – heximal