Dårlig performance - index på tomt felt
Hej,Jeg har et lidt specielt problem med en database - hvor vi ønsker at slette cirka 40.000 records fra en tabel. Disse records er normaltvis relateret via et ID tekst-felt til andre tabeller i databasen. Disse andre tabeller er store (en af dem har 8,5 mio records) og i dette specielle tilfælde er der INGEN referencer til nogen steder til min tabel med de 40.000 records - det felt der anvendes til reference til 40.000 recordstabllen er ganske enkelt tomt overalt i alle de andre tabeller.
Sletningen foregår via en applikation der validerer at der ikke findes nogen referencer for at sikre at recorden i 40.000 tabellen kan slettes. Derfor er det IKKE en løsning blot at slette direkte i 40.000 records tabellen.
Jeg har luret i v$sql og indexeret de tabeller der slås op i af applikationen når der slettes records i 40.000 tabellen. En almindelig "create index .. on ...;" kommando. Herefter er diskio faktisk væsentlig nedbragt og hastigheden er noget forbedret, men det går stadig meget langsomt at slette mine records i 40.000 tabellen. Før tog det 2,5 minutter - nu cirka 1,5 minut per record der slettes.
Oracle versionen er Release 10.2.0.3.0
Er der nogen der har et bud på om index kunne oprettes "bedre" eller andet der kan gøre for at få det til at performe ordentligt?
Jeg har også forsøgt at Optimizer Mode til RULE based i stedet for ALL_ROWS mode uden succes.