[2005] UPDATE FROM sans FROM
Bonjour,
j'ai une question à laquelle je pense avoir la réponse mais j'aimerais vérifier cela car cette réponse me déplaît.
Lorsque l'on doit mettre à jour une table sur base d'informations venant d'une ou plusieurs tables, on utilise habituellement (en sql server) la clause UPDATE... FROM.
Seulement, voilà, je me retrouve dans un cas où je ne peux pas utiliser cette syntax (update sur view) et je me retrouve avec la contre performance d'un update sans from.
Voici mon query :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
; WITH Data AS (
SELECT
CM.IdClub
, EXT.BeginMembership
, EXT.Membership
FROM MyGolf.dbo.tClubMembers AS CM
CROSS APPLY (
SELECT TOP(1)
NMS.BeginMembership
, NMS.Membership
FROM @tNMemberShip AS NMS
WHERE CM.IdClub = NMS.IdClub
ORDER BY NMS.Membership DESC
) AS EXT
WHERE CM.IdMember = @IdMember
)
UPDATE MyGolf.dbo.vDATA_tClubMembers
SET
BeginMembership = (
SELECT TOP(1)
BeginMembership
FROM Data
WHERE Data.IdClub = vDATA_tClubMembers.IdClub )
, Membership = (
SELECT TOP(1)
Membership
FROM Data
WHERE Data.IdClub = vDATA_tClubMembers.IdClub )
, ViaSynchro = @ViaSynchro
WHERE IdMember = @IdMember
AND EXISTS (
SELECT TOP(1)
1
FROM Data
WHERE Data.IdClub = vDATA_tClubMembers.IdClub
) |
Le sous query est donc excécuté intégrallement 3 fois!
Ce n'est pas une surprise.
J'aimerais savoir s'il existe une méthode plus efficace?
Pour rappel : MERGE n'exite pas en SQL Server 2005.