[ORACLE]Odszukanie konkretnej wartości lub jej najbliższej
Lechu - 10-09-2006 00:14
[ORACLE]Odszukanie konkretnej wartości lub jej najbliższej
Załóżmy, że mamy tabele A w której jedno z pól zawiera unikalną datę (A.date). Jak najszybciej odszukać rekord który będzie zawierał A.date równy zadanej dacie lub najblizszej wcześniejszej ?
Dzieki za wskazówki Lechu
PS. Motor w wersji >= 9
Marek TROFIMIUK - 10-09-2006 00:15
Lechu <lkl@wp.pl> wrote: > Załóżmy, że mamy tabele A w której jedno z pól zawiera unikalną datę > (A.date). Jak najszybciej odszukać rekord który będzie zawierał A.date równy > zadanej dacie lub najblizszej wcześniejszej ? > > Dzieki za wskazówki > Lechu > > PS. Motor w wersji >= 9
select * from A where A.date=(select max(A2.date) from A A2 where A2.date <=ZADANA_DATA)
Może f-cje analityczne będą szybsze? p. -- Marek Trofimiuk < mt20863 (at) sgh waw pl > Primary key fingerprint: FA3C 14D8 020F FA0C 70AE 930C F63F F04B 2ADD 9DD7
Paweł Matejski - 10-09-2006 00:15
Marek TROFIMIUK wrote: > Lechu <lkl@wp.pl> wrote: >> Załóżmy, że mamy tabele A w której jedno z pól zawiera unikalną datę >> (A.date). Jak najszybciej odszukać rekord który będzie zawierał A.date równy >> zadanej dacie lub najblizszej wcześniejszej ? >> >> Dzieki za wskazówki >> Lechu >> >> PS. Motor w wersji >= 9 > > select * from A > where A.date=(select max(A2.date) from A A2 where A2.date <=ZADANA_DATA)
Ja tam dawno w oraclu nie pisałem, ale załatwiało się to chyba taką konstrukcją:
select /*FIRST ROWS*/ * from (select * from A where A.date <= ZADANA_DATA order by A.data) where rownum <= 1;
Nie pamiętam dokładnie, jak to się zapisywało optymalizacje.
-- P.M.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
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.pldoc.pisz.plpdf.pisz.plets2.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 |
|