webForumDet fria alternativet

vad går snabbast

3 svar · 336 visningar · startad av Nöff

NöffMedlem sedan nov. 2003569 inlägg
#1

Hej

har en tabell med 30 kolumner.

Action: Ska uppdatera 1 rad.

Alternativ 1.
Ange bara ID:et i WHERE satsen och uppdatera ALLA kolumner även dom kanske inte har ändrats.

Alternativ 2.
Ange ID:et och ALLA 30 kolumner i WHERE satsen så att den får jämföra med det värdet jag har i parametern och det värde som finns kolumnen typ såhär: WHERE kolumn1<>@mittvärde och uppdatera om värdet har förändrats.

Att fundera över... Visst vore det klart och riktigt att använda alternativ2 och uppdatera bara om det nya värdet är annorlunda än det gamla, jomenvisst.. men !! , eftersom jag har 30 kolumner kommer det bli en rätt svettig UPDATE sats om alla dessa "WHERE kolumn1<>@mittvärde " ska kollas.. Därför undrar jag vilket som kan gå snabbast, skita i att kolla om värdet har ändrats och uppdatera oavsett, eller lägga till en WHERE sats där den kollar alla 30 kolumnerna och uppdaterar bara om kolumnen har förändrats.??

UlfTMedlem sedan maj 20018 027 inlägg
#2

Alternativ 1 borde vara snabbast, eftersom du då inte testar vad kolumnerna hade för värde tidigare. Alternativ 2 är onödigt komplicerat. Du vet ju faktiskt redan innan vilket värde kolumnen ska ha. Om kolumnen redan hade det värdet, så har ju ingen skada skett av att du sätter det värdet igen.

NöffMedlem sedan nov. 2003569 inlägg
#3

OK :D

PaceMedlem sedan juni 20019 024 inlägg
#4

UlfT skrev:

Alternativ 1 borde vara snabbast, eftersom du då inte testar vad kolumnerna hade för värde tidigare. Alternativ 2 är onödigt komplicerat. Du vet ju faktiskt redan innan vilket värde kolumnen ska ha. Om kolumnen redan hade det värdet, så har ju ingen skada skett av att du sätter det värdet igen.

Version 2 är inte alls onödigt komplicerat utan en nödvändighet om man behöver versionskontroll på den aktuella posten. Ponera att två användare redigerar samma post samtidigt - den person vars ändringar sparas först kommer att förlora sin information när den andra personen sparar.

Om du däremot jämför med alla värden kan du returnera antalet påverkade poster och på så vis upptäcka konflikter med andra användare.

0 påverkade rader = redigeringskonflikt
1 påverkad rad = allt okej ;)

I fråga om hastighet är, som UlfT redan påpekat, alternativ 1 såklart snabbast. Men det är ju två olika syften med båda uppdateringarna, så det är lite svårt att jämföra. Behöver du jämföra så gör du ju självklart det. Annars skiter du i det. ;)

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)