tplanitz
Erfahrenes Mitglied
Hallo,
folgende frage stellt sich für die DB: finde die nachrichten die in einem bestimmten zeitraum versendet wurden und deren erste 4 Byte einem suchmuster entsprechen.
Fragen:
-- Wie kann man eine Spalte indizieren (Nur die ersten 4 Bytes, die haben das Suchmuster) in der sich ein BLOB type befindet?
Ich habe das folgendermaßen gemacht aber leider wird der Index nicht benutzt, es werden auch nicht die anderen indexe benutzt in der abfrage unten, nur wenn ich die BLOB bedingung auskommentiere.
-- Wird dadurch der Materialized view gestört (Meine Basistabellen werden durch einen MV realisiert der immer alle 10 Minuten refreshed wird), laut Admin führte der INDEX den ich angelgt hatte zu fehlern.
Ich hoffe mir kann jemand helfen, die Abfrage oben ist nur ein Teilstück aus einem Programm, die Ergebnisse werden weiter verwendet und mit anderen Abfragen gejoint.
Vielen Dank vorab
folgende frage stellt sich für die DB: finde die nachrichten die in einem bestimmten zeitraum versendet wurden und deren erste 4 Byte einem suchmuster entsprechen.
Fragen:
-- Wie kann man eine Spalte indizieren (Nur die ersten 4 Bytes, die haben das Suchmuster) in der sich ein BLOB type befindet?
Ich habe das folgendermaßen gemacht aber leider wird der Index nicht benutzt, es werden auch nicht die anderen indexe benutzt in der abfrage unten, nur wenn ich die BLOB bedingung auskommentiere.
Code:
-- Funktion zum herstellen das die daten deterministich sind
create or replace function f_blobtrunc(val blob)
return raw deterministic as
retval raw(4);
begin
retval := dbms_lob.substr(val, 4, 1);
return retval;
end;
/
-- function based index creieren
CREATE INDEX idx_Blob ON t_daten (f_blobtrunc(a_data)) compute STATISTICS
Code:
select a_telefonnummer, a_eingangs_datum, DBMS_LOB.substr(a_data, 4, 1) a_message
from t_daten
where a_eingangs_datum > = &start_date
and a_eingangs_datum <= &end_date
and DBMS_LOB.substr(a_data, 4, 1) LIKE '0_815%'
Ich hoffe mir kann jemand helfen, die Abfrage oben ist nur ein Teilstück aus einem Programm, die Ergebnisse werden weiter verwendet und mit anderen Abfragen gejoint.
Vielen Dank vorab