J'utilise une requête les colonnes de jointure l'un a un index cluster et l'autre a un index non-cluster. La requête prend beaucoup de temps. Est-ce la raison pour laquelle j'utilise différents types d'index?Joindre sur des colonnes avec des index différents
SELECT @NoOfOldBills = COUNT(*)
FROM Billing_Detail D, Meter_Info m, Meter_Reading mr
WHERE D.Meter_Reading_ID = mr.id
AND m.id = mr.Meter_Info_ID
AND m.id = @Meter_Info_ID
AND BillType = 'Meter'
IF (@NoOfOldBills > 0) BEGIN
SELECT TOP 1 @PReadingDate = Bill_Date
FROM Billing_Detail D, Meter_Info m, Meter_Reading mr
WHERE D.Meter_Reading_ID = mr.id
AND m.id = mr.Meter_Info_ID
AND m.id = @Meter_Info_ID
AND billtype = 'Meter'
ORDER BY Bill_Date DESC
END
Combien de lignes avez-vous dans la table? Combien d'index? Que dit le plan d'exécution? Où est votre code SQL? –
150 k dans les deux tableaux. effectivement la requête est trop grande, mais le plan d'exécution dit que cette requête prend 33% et une requête similaire à cela prend également 33%, si je reçois une solution pour cela, je peux améliorer le temps. – Mustafa
selection @NoOfOldBills = count (*) \t \t \t \t \t \t \t de Billing_Detail d, Meter_Info m, Meter_Reading mr \t \t \t \t \t \t \t où d.Meter_Reading_ID = mr.ID et m.Id = mr.Meter_Info_ID et M.Id = @ Meter_Info_ID ET BillType = 'Compteur' \t \t \t \t \t \t \t \t \t \t IF (@NoOfOldBills> 0) \t \t \t \t \t \t BEGIN \t \t \t \t \t \t \t \t \t sélectionner top 1 @ PReadingDate = Bill_Date \t \t \t \t \t \t \t \t de Billing_Detail d, Meter_Info m, Meter_Reading mr \t \t \t \t \t \t \t \t où d.Meter_Reading_ID = mr.ID et m.Id = mr.Meter_Info_ID et [email protected]_Info_ID et billtype = ordre 'mètre' par Bill_Date desc \t \t \t \t \t \t \t FIN – Mustafa