Dies ist meine AbfrageWie SQL-Abfrage mit MIN MAX-Funktion
SELECT
[Car].CarId AS Id,
CAST(MIN(ISNULL([Dates].StartDate, [Reco].InsStartDate)) AS date) AS StartDate,
CAST(MAX(ISNULL([Dates].EndDate, [Reco].InsEndDate)) AS date) AS EndDate
FROM
dbo.TabReco [Reco]
INNER JOIN dbo.Insurance [INS] ON [INS].InsId = [Reco].InsId
INNER JOIN dbo.InsuranceCar [Details] ON [Details].INSCarId = [INS].INSCarId
INNER JOIN dbo.CarHistory [Car] ON [Car].CarHistId = [Details].CarHistId
INNER JOIN dbo.InsuranceRiskDates [Dates] ON [Dates].INSId = [INS].INSId
GROUP BY
[Reco].Number,
[Car].CarId
Wenn ich diese Abfrage ausführen es braucht viel Zeit zu optimieren. Das Problem ist mit Teil MIN/MAX für Daten.
CAST(MIN(ISNULL([Dates].StartDate, [Reco].InsStartDate)) AS date) AS StartDate,
CAST(MAX(ISNULL([Dates].EndDate, [Reco].InsEndDate)) AS date) AS EndDate
Wenn ich diesen Teil entfernen, funktioniert die Abfrage schneller. Gibt es eine Möglichkeit, eine solche Abfrage zu optimieren? Oder es ist unmöglich.
Können Sie den Ausführungsplan erstellen? Ohne irgendeine Art von Details erraten wir nur. –
Wenn Sie Indizes für die Schlüssel haben, die für den 'Join' verwendet werden, können Sie wenig tun. –
Wenn Ihre Daten * als DATUM * gespeichert wurden, können Sie möglicherweise einige clevere Indizes hinzufügen, um dies zu beheben. Da sie es nicht sind, ist das beste, was Sie tun können, ein Deckungsindex, der helfen kann oder auch nicht. In jedem Fall müssen wir noch einen Abfrageplan sehen. – RBarryYoung