Ich verwende MS SQL und habe zwei Tabellen: Produkte (ProdID, einige andere Felder) und ProdCat (ID, ProdID, CategoryID), die bestimmen, welches Produkt zu welcher Kategorie gehört.Index zur Beschleunigung der Abfrage mit innerem Join erstellen
Und ich mache wählen wie
SELECT TOP (8) ProdID, Description, Image
FROM Products INNER JOIN ProdCat ON ProdCat.ProdID = Products.ProdID
WHERE Products.Active=1 AND ProdCat.CategoryID = 123 Order by ProdCat.sorting, Products.ProdID
Produkte Tisch verfügt über mehr als 50.000 und ProdCat Tabelle hat mehr als 150.000 Datensätze und die Abfrage ist langsam.
Können Sie bitte beraten, wie Index erstellt wird, um diese Abfrage zu beschleunigen?
Danke.
Hallo und willkommen bei SO. Niemand kann hier einen Index anbieten, da uns die Details Ihrer Tabellen nicht helfen können. Können Sie das ddl für die Tabellen und die vorhandenen Indizes bereitstellen? Es kann sein, dass ein Index nicht wirklich das Problem ist, aber ohne diese Details können wir nicht viel tun. –
Sie sollten den tatsächlichen Ausführungsplan für die Abfrage buchen. Sie können dies leicht von SSMS erhalten. – Igor
Schauen Sie sich den Plan an und sehen Sie, wo das Problem liegt. Ich kann mir mehrere Indizes vorstellen, die diese spezifische Abfrage optimieren würden, aber sie wären ziemlich spezifisch für diese Abfrage und nicht generell nützlich ... aber ich kann nicht sicher wissen, ohne Tabellenschemas, einen Plan zu sehen und mehr über das zu wissen Daten. – pmbAustin