Citat:
Ursprungligen postat av martine
Citat:
Ursprungligen postat av Frej
Martine: Självklart kan man hämta och använda sig av Between även om man normaliserar data, man använder vyer för att skapa "tabeller" för att hämta datat man vill hantera. Förövrigt är det inte "best practice" att använda SELECT, INSERT, UPDATE eller DELETE direkt mot tabeller. SELECT skall köras mot Vyer och UPDATE, INSERT och DELETE skall köras mot lagrade procedurer.
|
Nu är det möjligt att du är mycket bättre insatt i databaser men ger det verkligen alltid en prestandavinst att använda vyer och procedurer? Det är ju trots allt en omväg till informationen…
[..klipp..]
"Supernormalisering" betyder ju inte alltid prestandavinst och för min del tycker jag frågan också är om man inte gör saker krånligare än vad är nödvändigt i optimeringssyfte.
|
Jag ser inte vilken databas det är frågan om, men iaf i MS SQLServer så lär sig query execution enginen vad en SP gör och optimerar därefter sin sökning. Därför är det dåligt att köra inline sql mot en databas -eller- dynamisk sql i en SP. Sedan så tycker jag det är bättre ur en arkitekturell synvinkel att använda sig av SP's.
Jag skulle säga att normalisering(läs Övernormalisering) inte ligger i samma vågskål som Prestanda. Ökar du det ena så minskar du det andra. Man kan fundera på att tom aggregera information om det visar sig att (vilket ofta är sant) det skrivs kanske 1 gång per 1000 läsningar (eller mer), vilket betyder att man gör de tidskrävande sakerna vid skrivning och optimerar via aggregering för de andra 1000 tillfällena. Exempel på detta kan tex vara räknare för foruminlägg som updateras vid skrivning och inte räknas ut vid läsning etc.