Avatar billede snoopidoo Praktikant
28. oktober 2007 - 11:46 Der er 8 kommentarer og
2 løsninger

Skal jeg selecte fra et view eller direkte fra tabellen?

Jeg står og skal hente noget data ud fra en tabel, som vil være vores sidste 10 tilbud.
Jeg har så lavet en stored procedure, men ved ikke om det ville være mere optimalt også at lave et view af de 10 tilbud, og så i min stored procedure hente fra viewet istedtfor.
Avatar billede soerenlyn Nybegynder
28. oktober 2007 - 12:23 #1
Hvad gør din stored procedure ?
Avatar billede snoopidoo Praktikant
28. oktober 2007 - 12:29 #2
Den selecter bare de seneste 10 til.

Jeg tænkte så på om det ville optimere processerne hvis jeg oprettede et view, som selectede de 20 seneste, og jeg så i min stored procedure selectede alt fra mit view, eller om det ikke ville være nogen forskel.

Det ville nemlig nok skulle gøre 100.000 gange eller mere om dagen.
Avatar billede soerenlyn Nybegynder
28. oktober 2007 - 12:42 #3
Okay ... Jeg er rimelig sikker på at det er hurtigere at hente 20 poster 1 gang, end at hente 10 poster 2 gange.
Avatar billede arne_v Ekspert
28. oktober 2007 - 13:48 #4
De 20 seneste er jo ikke statisk, så den query ville skulle køres hver gang alligevel.

Jeg er ret sikker på at du vil være fint kørende med SP+tabel.

100000 SELECT per dag er kun lige god 1 SELECT per sekund og det er slet ikke slemt.

Iøvrigt vil SP+view+tabel formentligt være langsommere end SP+tabel i dit tilfælde.

Medmindre du har en virkeligt stor database, så tror jeg ikke at view laget giver dig noget,
så jeg vil derfor anbefale at din SP går direkte på tabel.
Avatar billede snoopidoo Praktikant
28. oktober 2007 - 16:44 #5
basen vil være ret stor hen af vejen.
En del tabeller, hvor nogle tabeller har omkring 200.000 rows.
Dog ikke lige denne med tilbud i.
Avatar billede arne_v Ekspert
29. oktober 2007 - 01:22 #6
Hvis du har i tusindvis af tabeller kan det give mening at putte et view loag ind men
ikke for "en del" tabeller.

200000 rækker er heller ikke vildt mange.
Avatar billede teepee Nybegynder
29. oktober 2007 - 09:51 #7
Et almindeligt view laver intet som helst andet end at du kan skrive lidt mindre kode i din select. Koden er i sidste ende den samme som hvis du tog alt sql'en fra viet og smed ind i din select. Hvis du vil lave et materialized view, eller blot smide rækkerne over i en anden tabel, som du opdaterer med jævne mellemrum, så kan der være en fortjeneste, men ikke ved blot at lave et view. Hvis sql'en er den samme hver gang, tror jeg at cache-funktionen vil hjælpe dig til at få rækkerne hurtigt og du behøver derfor ikke at flytte nogle data, men hvis svartiderne bliver lange, så lav en lille opslagstabel hvor du vedligeholder data med jævne mellemrum.
Avatar billede snoopidoo Praktikant
29. oktober 2007 - 15:47 #8
ok. Så tror jeg at det i de fleste tilfælde bedst kan betale sig ikke at lave views.
Smider i nogle svar?
Avatar billede arne_v Ekspert
29. oktober 2007 - 15:48 #9
svar
Avatar billede teepee Nybegynder
30. oktober 2007 - 08:27 #10
Hvis din sql er kompliceret og du skal bruge det flere steder, så lav endeligt et view, og select fra dette, men det "koster det samme"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester