Avatar billede lbaad Nybegynder
14. november 2005 - 13:59 Der er 3 kommentarer og
1 løsning

Konvetere sysdate-xx til dato

Hej

Jeg sidder og laver noget statistik på nogle datoafgrænsninger. Da min database af en eller anden årsag er meget lang tid om at lave følgende udtryk
where trx_time >= trunc(sysdate-42) and
trx_time <= trunc(sysdate-3)

ville jeg godt have det sådan, at når der bliver lavet sådan et udtryk, at den skal lave det om til en datostreng istedet. F.eks.  trx_time >= trunc(to_date('20050905')) and
trx_time <= trunc(to_date('20051017'))
Det har jeg nemlig erfaring med, at det går noget hurtigere.

Håber i kan hjælpe mig.
Avatar billede oguru Nybegynder
15. november 2005 - 15:15 #1
Du skal bruge et function based index (FBI) over trunc(sysdate). Prøv det og se om ikke din explain plan så anvender det nye index.
Avatar billede oguru Nybegynder
15. november 2005 - 15:16 #2
trunc(trx_time) selvfølgelig :-)
Avatar billede lbaad Nybegynder
15. november 2005 - 16:11 #3
OK - jeg kan desværre ikke teste det, da min tabel med trx_time indeholder 160 mill rækker, så et index vil fylde ca. 9GB plads, og det vil jeg ikke bruge pt. Tak for hjælpen.

/Lars
Avatar billede oguru Nybegynder
16. november 2005 - 09:49 #4
Tak for point.

Så er der jo ikke noget at sige til at dit statement tager lang tid, da Oracle ikke har andre muligheder end at lave en full table scan, hvis feltet ikke er indekseret. Hvis du kan inkludere andre betingelser og dermed begrænse det resultatsæt, som der skal køres statistik på, vil du få bedre performance.

Men prøv at kigge lidt på http://asktom.oracle.com - her finder du måske nogle ideer
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester