ďťż
 
Oracle i pole ktorego zawartoscia jest wynik funkcji ďťż
 
Oracle i pole ktorego zawartoscia jest wynik funkcji
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

Oracle i pole ktorego zawartoscia jest wynik funkcji



Darek - 21-04-2006 00:27
Oracle i pole ktorego zawartoscia jest wynik funkcji
  Potrzebuje zrobic w Oracle cos na ksztalt indeksu na funkcji.
W Oracle mozna zrobic cos takiego:
create index my_idx on myTable(upper(some_column));

Zapewne Oracle gdzies w prywatnej strukturze robi w tym wypadku extra
kolumne gdzie przechowuje wynik funkcji dla kazdego rekordu.
A ja potrzebuje zrobic cos podobnego ale na jawnie zadeklarowanej
kolumnie funkcyjnej.
Tabela

create table testTable (
col1 varchar(120) not null
)

Chcialbym teraz dolozyc kolumne 'col2', ktora bedzie przechowywala
wynik jakiejs funkcji, zaleznej od 'col1'. Mozna to zrobic triggerem,
ktory zrobi
col2=funkcja(col1)
A mozna jakos w samej definicji 'create table' lub 'alter table' ?
Cos jak w Ms SQLServer
alter table testTable add col2 as UPPER(col1)

Podobnie mozna to tez zrobic w DB2 (z inna skladnia).
A co z Oracle?





=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 21-04-2006 00:27

  Darek wrote:
> Chcialbym teraz dolozyc kolumne 'col2', ktora bedzie przechowywala
> wynik jakiejs funkcji, zaleznej od 'col1'. Mozna to zrobic triggerem,
> ktory zrobi
> col2=funkcja(col1)
> A mozna jakos w samej definicji 'create table' lub 'alter table' ?
AFAIK masz do dyspozycji trzy mechanizmy:
- trigger (pełna elastyczność)
- indeks funkcyjny (do wyszukiwania po wartościach pochodnych)
- widok (jeśli zależy Ci, żeby zwykły SELECT t.* zwracał wartości pierwotne
i pochodne)

Przy okazji ciekawy artykuł wokół tego tematu:
http://dizwell.com/main/index.php?op...d=112&id=nofbi

--
Michał Kuratczyk




Darek - 21-04-2006 00:27

  Czyli w moim przypadku pozostaje jednak chyba tylko trigger.
Potrzebuje uzywac wyniku funkcji w zapytaniu, tyle ze ten sam kod
'select' powinien efektywnie dzialac w kilku bazach danych (db2,
oracle, sql server, postgres).
db2 i sql server pozwalaja latwo zdefiniowac derived column, ktora moge
sobie sam poindeksowac. Oracle idzie niby dalej ale rozwiazanie wymaga
db specific zmian.
A zatem trigger i we wszystkich bazach indeksy na derived column.

Dzieki




=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 21-04-2006 00:27

  Darek wrote:
> ten sam kod 'select' powinien efektywnie dzialac w kilku bazach danych
> (db2, oracle, sql server, postgres).
To se ne da. :->
Jak chcesz, to próbuj - powodzenia, ale IMO to nie ma sensu. Chyba, że
wydajność ma być tylko akceptowalna, a nie bardzo dobra. Do otrzymania
maksymalnej wydajności konieczne jest dokładne zrozumienie zasad działania
danej bazy i wykorzystywanie jej mechanizmów. A różne bazy różnie działają
i siłą rzeczy optymalne rozwiązanie na jednej będzie nieoptymalne na innej.

Jak ktoś kupuje np. Oracle, to oczekuje (słusznie), że software będzie
wykorzystywał to co baza oferuje. Jeśli nie, to jest to dla niego strata
pieniędzy.

--
Michał Kuratczyk





William - 22-04-2006 00:12

  A czy nie jest tak, ze jesli masz kolumne X i stworzysz indeks funkcyjny
UPPER(X) w Oracle to zapytanie SELECT UPPER( X ) samo automatycznie z niego
skorzysta ?
  • 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?= Oracle 19g +Insert +Insert +Insert... [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?= =?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?= [oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?= [oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?= MSSQL Express czy Oracle Express =?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?= =?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • chinska-zupka.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