tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
914
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von tplanitz
    tplanitz tplanitz ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Beiträge
    123
    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.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    -- 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
    -- 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.

    Code :
    1
    2
    3
    4
    5
    
    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
     
    =========================================
    Glaube denen, die die Wahrheit suchen, und zweifle
    an denen, die sie gefunden haben.
    =========================================
    André Gide (1869-1951), frz. Schriftst., 1947 Nobelpr.
    =========================================

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Schau mal hier:
    http://www.daylight.com/dayhtml/doc/...t_indexes.html

    Wenn das nicht hinhaut wäre eventuell eine Variante zusätzlich zu der Blob Spalte noch eine weitere Spalte einzufügen welche einfach die ersten 4 bytes des Blobs (als varchar, int whatever) nochmal enthält und darauf einen Index anzulegen.

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  3. #3
    Avatar von Exceptionfault
    Exceptionfault Exceptionfault ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Neckarsulm
    Beiträge
    348
    Dein Index sieht so ganz ok aus, hat bei mir zumindest keine Fehler erzeugt. Es ist aber klar, dass er ihn bei deiner Abfrage nicht benutzt.
    Ein Function Based Index kann nur dann genutzt werden, wenn du in deiner Abfrage genau die selbe Funktion aufrufst, wie der Index indiziert hat:

    Code sql:
    1
    2
    3
    4
    5
    
    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     f_blobtrunc(a_data) = '0_815';
     
    liebe Grüße
    Exceptionfault (http://exceptionfault.de)

    Never say: "Always"! Always say: "Never say never"! - Tom Kyte @ Ask Tom Live in Berlin 2008

Ähnliche Themen

  1. PDF als BLOB in DB ablegen ORACLE
    Von cullmann im Forum Relationale Datenbanksysteme
    Antworten: 10
    Letzter Beitrag: 14.02.07, 15:54
  2. Oracle 9.2; Index erstellen, Statistiken
    Von tplanitz im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 03.12.06, 08:42
  3. Oracle 9.2i; BLOB feld in char
    Von tplanitz im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 01.10.06, 08:30
  4. iReport und oracle.sql.BLOB
    Von ioanaDE im Forum Java
    Antworten: 0
    Letzter Beitrag: 21.09.06, 15:24
  5. Oracle (Blob einfügen)
    Von chrishawaii im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 26.03.05, 23:12