ďťż
 
[mssql] Czesc zapytania przekazywana jako argument w procedurze ďťż
 
[mssql] Czesc zapytania przekazywana jako argument w procedurze
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[mssql] Czesc zapytania przekazywana jako argument w procedurze



panczo - 17-01-2007 00:05
[mssql] Czesc zapytania przekazywana jako argument w procedurze
  Pierwotnie zapytanie do bazy bylo budowane w aplikacji, teraz ma zostac
przeniesione do bazy i wykonywane przez procedure. Niestety ma strasznie
duzo parametrow, ktore decyduja o jego ksztalcie. Czy jest szansa na
przekazywanie skrawkow takiego zapytania do procedury (slowa kluczowe
rowniez by sie tam znalazly) w postaci np.: zmiennej znakowej?

Glownie chodzi o wydajnosc, a raczej jej sprawdzenie. Jakie jest
prawdpodobienstwo, ze zlozone zapytanie do bazy, zwracajace kilkaset
tysiecy wierszy bedzie wykonywalo sie szybciej poprzez wywolanie
procedury, niz zapytane z poziomu aplikacji?

Dokladniej chodzi o to, ze:
jest kilku producentow: A, B, C, D
Obecnie jest tak, ze dane zwracane sa dla wszystkich producentow, a
nastepnie juz w aplikacji sortowane wg. odpowiednich priorytetow,
parametrow i dzielone dla poszczegolnych producentow A, B, itd. z
osobna. Pod uwage jest brana mozliwosc zmiany sortowania i wykonania go
w bazie, ale decyzja wymaga dowodow na przyszla wydajnosc.

Jesli ktos ma doswiadczenie ze skladowanymi procedurami i porownaniem
ich wydajnosci w stosunku do funkcji wykonywanych w aplikacji to prosze
o informacje. Wystem bazodanowy to MSSQL, jezyk aplikacji - ColdFusion.

Pozdrawiam
Panczo





Marcin A. Guzowski - 17-01-2007 00:05

  panczo napisał(a):
> Pierwotnie zapytanie do bazy bylo budowane w aplikacji, teraz ma zostac
> przeniesione do bazy i wykonywane przez procedure.

No i bardzo słusznie.

> Niestety ma strasznie
> duzo parametrow, ktore decyduja o jego ksztalcie. Czy jest szansa na
> przekazywanie skrawkow takiego zapytania do procedury (slowa kluczowe
> rowniez by sie tam znalazly) w postaci np.: zmiennej znakowej?

Jest - dynamiczny SQL, ale to szybka droga do rzeźby. Lepiej wydzielić
kilka parametryzowalnych zapytań i wrzucić je do instrukcji warunkowej
w procedurze.

> Glownie chodzi o wydajnosc, a raczej jej sprawdzenie. Jakie jest
> prawdpodobienstwo, ze zlozone zapytanie do bazy, zwracajace kilkaset
> tysiecy wierszy bedzie wykonywalo sie szybciej poprzez wywolanie
> procedury, niz zapytane z poziomu aplikacji?

Szybkość wykonania zależy od wielu czynników - w każdym razie
procedury mają zwykle większą wydajność niż zapytania ad hoc
(pomijając cały szereg innych pozytywów). Jest to związane m.in. z
tym, że SQL Server cache'uje plany wykonań na poziomie całego ciała
procedury.

> Dokladniej chodzi o to, ze:
> jest kilku producentow: A, B, C, D
> Obecnie jest tak, ze dane zwracane sa dla wszystkich producentow, a
> nastepnie juz w aplikacji sortowane wg. odpowiednich priorytetow,
> parametrow i dzielone dla poszczegolnych producentow A, B, itd. z
> osobna. Pod uwage jest brana mozliwosc zmiany sortowania i wykonania go
> w bazie, ale decyzja wymaga dowodow na przyszla wydajnosc.
> Jesli ktos ma doswiadczenie ze skladowanymi procedurami i porownaniem
> ich wydajnosci w stosunku do funkcji wykonywanych w aplikacji to prosze
> o informacje. Wystem bazodanowy to MSSQL, jezyk aplikacji - ColdFusion.

Takie rzeczy są case-specific, więc najłatwiej samemu przetestować.
Wszystko zależy od rozmiarów zwracanego zbioru danych. Od pewnej
wielkości i w pewnych warunkach opłaca się niektóre czynności
przerzucić na bazę danych. Każdy kij ma jednak co najmniej dwa końce...

--
Pozdrawiam,
Marcin Guzowski
http://guzowski.info
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?= =?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?= [ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?= phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?= [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?= [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [mysql/php] jak =?ISO-8859-2?Q?zliczy=E6_ilo=B6=E6_unikalnyc?==?ISO-8859-2?Q?h_rekord=F3w_w_jednym_zapytaniu=3F?= [MySQL] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?= mecze sie i mecze i nic - zapytanie czesciowe
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • red-hacjenda.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com