travoni skrev:
1. Hurvida är det effektivt att använda gridviewns inbyggda paging om man skall hantera större datamängder? Finns det bättre sätt att hämta datan då?
Det är svårt att svara på, det beror på var du har din flaskhals. Om du har en FET lina, men en långsam databas och lite minne på din server, så jag då är det optimal att skicka informationen fram och tillbaka.
Om du har en långsam lina och en snabb databas eller mycket minne på din server så är lösningen helt förkastlig, om man nu inte är lat och bara kör på i MS klicka-gissa-spring värld....
Jag kan se 2 alternativ som jag skulle använt mig av först.
1. Jag skulle endast hämta upp den datan som krävs för min paging att fungerar, alltså om jag endast skall visa 10 poster, varför i all världen skall jag då hämta 10.000 från databasen och sedan bara ha 9990 poster liggandes i viewstaten / minnet. Denna lösning kom dock att belasta din databas mer eftersom du vid varje sidvisning kommer att fråga databasen efter ny data.
2. Hämta alla 10.000 raderna och lägg i cachen på din server, du kommer nu vid varje sidvisning att hämta och visa 10 poster av de 10.000 som finns i din cache, du spara alltså din databas för onödiga frågor och spara din lina genom att din viewstate blir mindre. Tyvärr så kräver du att din server har mycket minne.
Så istället för att ge dig ett svar så skall jag ge dig ett argument:
Om din datamängd är liten (som du vill pagea på) och din lina är fet, så lägg den i viewstaten.
Om din datamängd är stor och kan delas av många användare, så lägg den i cachen och hämta ut dina delposter därifrån.
Om din datamängd är stor och kommer att vara olika för de olika användarna så hämta bara ut den data som du behöver från databasen varje gång.
Som du säkert förstått så finns det inget generellt svar på din fråga och svaret är att du får testa dig fram vad som passar bäst för din applikation och dina förutsättningar.
- M