wykonywanie kodu sql przechowywanego w tabeli
Marcin - 17-10-2007 00:01
wykonywanie kodu sql przechowywanego w tabeli
Witam,
mam dosc "dziwne" pytanie: czy jest mozliwosc (u mnie MySQL >=5, ale interesuje mnie jak to jest ew. w innych bazach) wykonania kodu sql zapisanego w tabeli, np. w kolumnie TEXT bez koniecznosci pobrania tego pola i wykonania $db->execute('pobrany sql'), a jedynie w oparciu o jakies polecenie wyslane do bazy danych?
Tlumacze o co chodzi. Bede przetwarzal duze ilosci rekordow na podstawie zdefiniowanych regul (czyli de facto ludzko wyrazonych klauzul warunkow where ;) . Same reguly beda przechowywane i znormalizowane w bazie i beda sie rzadko zmienialy, wiec pewnie na podstawie zdefiniowanych regul bede sobie cache'owal zapytanie w stylu: UPDATE ... WHERE (tu przetworzona na SQL regula - pobrana z cache). I teraz pytanie: czy moge wykonac takie update'y bez koniecznosci pobierania rekordu zcache'owanej reguly z bazy i wyslania jej z powrotem?
wszelkie pomysly na optymalizacje powyzszego problemu mile widziane :) jak o to pytac po angielsku? ;) bo google mi nic nie powiedzial...
dzieki za pomoc, pozdr, m.
TButton - 18-10-2007 00:03
> > Tlumacze o co chodzi. Bede przetwarzal duze ilosci rekordow na podstawie > zdefiniowanych regul (czyli de facto ludzko wyrazonych klauzul warunkow > where ;) . Same reguly beda przechowywane i znormalizowane w bazie i > beda sie rzadko zmienialy, wiec pewnie na podstawie zdefiniowanych regul > bede sobie cache'owal zapytanie w stylu: UPDATE ... WHERE (tu > przetworzona na SQL regula - pobrana z cache). I teraz pytanie: czy moge > wykonac takie update'y bez koniecznosci pobierania rekordu zcache'owanej > reguly z bazy i wyslania jej z powrotem? Procedury składowane mogą pomóc ale nie wiem na jakim są poziomiew Mysql.
Zawsze mnie denerwuje jak ktoś sie pyta na grupie dlaczego chce zrobic coś tak a nie w inny sposób, ale niestety MUSZE sie teraz zapytać Ciebie.
Dlaczego po prostu nie pociągniesz REGUŁ i nie zbudujesz SQL-a na ich podstawie ?
Filip Rembia kowski - 18-10-2007 00:03
On 16 Pa , 22:01, Marcin <md23...@sgh.waw.pl> wrote: > Witam, > > mam dosc "dziwne" pytanie: czy jest mozliwosc (u mnie MySQL >=5, ale > interesuje mnie jak to jest ew. w innych bazach) wykonania kodu sql > zapisanego w tabeli, np. w kolumnie TEXT bez koniecznosci pobrania tego > pola i wykonania $db->execute('pobrany sql'), a jedynie w oparciu o > jakies polecenie wyslane do bazy danych? > > Tlumacze o co chodzi. Bede przetwarzal duze ilosci rekordow na podstawie > zdefiniowanych regul (czyli de facto ludzko wyrazonych klauzul warunkow > where ;) . Same reguly beda przechowywane i znormalizowane w bazie i > beda sie rzadko zmienialy, wiec pewnie na podstawie zdefiniowanych regul > bede sobie cache'owal zapytanie w stylu: UPDATE ... WHERE (tu > przetworzona na SQL regula - pobrana z cache). I teraz pytanie: czy moge > wykonac takie update'y bez koniecznosci pobierania rekordu zcache'owanej > reguly z bazy i wyslania jej z powrotem? > > wszelkie pomysly na optymalizacje powyzszego problemu mile widziane :) > jak o to pytac po angielsku? ;) bo google mi nic nie powiedzial... >
w standardzie to si mówi o EXECUTE IMMEDIATE i wi kszo baz danych to ma. kwestia obudowania procedur sk adowan .
w postgresie (PL/PgSQL) si da, u ywaj c funkcji u ytkownika, zobacz np. http://www.depesz.com/index.php/2007...adawanie-praw/
w Oracle te , co w PL/SQL bardzo podobnego.
w MSSQL te , chocia troch bardziej topornie ale idea identyczna. b dziesz musia u y kursora.
Marcin - 18-10-2007 00:03
TButton pisze: > Dlaczego po prostu nie pociągniesz REGUŁ i nie zbudujesz SQL-a na ich > podstawie ?
Dzieki za odpowiedz.
Wlasnie tak zrobie - na podstawie regul z bazy utworze SQLa automatycznie. Tylko ze reguly beda sie zmieniac rzadko, a ten SQL bedzie wykonywany z crona dosc czesto, wiec chce tego wygenerowanego SQLa sobie zcache'owac (i zrobic update gdy zmieni sie dana regula). Moze faktycznie niewarta skorka wyprawki, ale w zaleznosci od ilosci regul oszczednosc moze byc zauwazalna.
poszukam wiecej o opcji execute immediate
pozdr, m.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?=
=?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
=?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?=
[MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?=
=?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?=
[Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?=
=?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?=
[newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?=
zanotowane.pldoc.pisz.plpdf.pisz.plfelgiuzywane.xlx.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 |
|