Ich habe zwei Tabellen wie unten in einer anderen Tabelle existiert:effizienteste Weg, Datensätze aus einer Tabelle zu erhalten, für die ein Datensatz für jeden Monat
User: User_ID, User_name and some other columns (has approx 1000 rows)
Fee: Created_By_User_ID, Created_Date and many other columns (has 17 million records)
Gebühren-Tabelle hat keinen Index (und ich kann nicht erstelle einen).
Ich brauche eine Liste von Benutzern für jeden Monat eines Jahres (sagen 2016), die mindestens eine Gebühr erstellt haben.
Ich habe eine Arbeitsabfrage, die lange dauert, um auszuführen. Kann mir jemand bei einer besseren Abfrage helfen? Kann EXIST
Klausel verwenden (habe ich versucht, eine, sondern nimmt immer noch Zeit, wie es Fee
Tabelle scannt)
SELECT MONTH(f.Created_Date), f.Created_By_User_ID
FROM Fees f
JOIN [User] u ON f.Created_By_User_ID= u.User_ID
WHERE f.Created_Date BETWEEN '2016-01-01' AND '2016-12-31'
hinzufügen 'wählen DISTINCT'. Wenn Sie eine Benutzerliste benötigen, müssen Sie nicht das gesamte Los auswählen. – cha