Zanima me što je bolje za koristiti. Osobno korisitm više inline sql s parametrima. Više me zanima performanse, u kojim sličajevima je bolje koristiti SP radi performansi. Događa mi se da nemam toliku mogučnost mijenjanja SP, ali imam sada web based mssql manager pa više nemam tu prepreku. Osobno SP korisitm ako hoču dodati još jedan nivo zaštite za svaki slučaj.
Store procedures vs inline sql
- poruka: 5
- |
- čitano: 1.636
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
- +/- sve poruke
- ravni prikaz
- starije poruke gore
Hm.. hm.. Tesko je uopsteno pricati o tome, medjutim, ono sto se generalno moze reci jeste da ti je obicno bolje da pravis izvjestaje i sl. stvari jednim direktnim upitom, ali to podrazumijeva da nemas previse agregatnih funkcija i select-a u select-u u svom upitu. Znas ono select t1.x, t1.y, t1.z, (select t2.nesto
from tabela2 t2), t1.q from tabela1 where.. itd..
U toj situaciji ti je bolje da napravis pozadinsku funkciju koja ce ti vratiti rezultat za odredjene podatke. Naravno, stored procedure ti daju vise mogucnosti, ali ne treba komplikovati ukoliko mozes zavrsiti nesto direktnim upitom, a da pri tome ne spada u gore navedenu vrstu. Inace, SQL Tuning je malo komplikovaniji od prostog dijeljenja na inline sql i stored procedure. Prva stavka u nizu je kako je projektovana baza, pa indexi itd.., pa onda upit. Kod stored procedura npr. vodi racuna o tome da sto manje koristis kursore. Oni su ti bottle neck svakog upita. Bolje ti je da u takvoj situaciji koristis UNION ALL nekolicine upita, ako ti se to moze uklopiti. Naravno i ovo zavisi od slucaja do slucaja, ali ti napominjem da probas, jer je meni pomoglo vise puta. Isto tako, mozda ce ti se vise uklapati CASE, koji ce ti skoro uvijek zamijeniti DECODE, a uz to je brzi. Opet, mozes doci u situaciju kada ovo nije slucaj, ali uglavnom bi trebalo da je tako.
Eto, nadam se da sam ti bar malo pomogao..
Pozdrav,
Miroslav
Zanima me što je bolje za koristiti. Osobno korisitm više inline sql s parametrima. Više me zanima performanse, u kojim sličajevima je bolje koristiti SP radi performansi. Događa mi se da nemam toliku mogučnost mijenjanja SP, ali imam sada web based mssql manager pa više nemam tu prepreku. Osobno SP korisitm ako hoču dodati još jedan nivo zaštite za svaki slučaj.
za zaštitu i skrivanje strukture baze se koriste view-i, a procedure za obradu podataka, mada može i za druge stvari, ali to nije namjena procedura.
Ako imaš isti upit koji koristiš često (samo uz izmjenjeni uvjet) onda je svakako puno bolje koristiti SP. Razlog je u execution planu - stora će ti koristiti isti execution plan cijelo vrijeme. U suprotnom riskiraš kreiranje gomile execution planova što ima negativan utjecaj na performanse.
Tnx,
@MarkoCro, me tepo me netko prije dva dana nešto u vezi SP i securtitija. Jel valjda im je došla stranica jedna na reviziju i uspjeli su napraviti da dropaju table i kaže radi securitija treba koristiti SP što mi pravo da ti kažem ne ide u glavu. Koliko mi je poznato drop table je može napraviti ako se ne koristi parametrizirani inline sql a ruki na srce netko tko napravi SELECT nesti FROM negdje WHERE nestoTrece= " + something + " ne zna ni programirati. Tu me patilo ta finta sa securiti, mislim znam da se može kao napraviti ogrnaičen pristup podatcima sa storama, ali zato postoje view-ovi.