ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
914
914
EMPFEHLEN
-
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.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
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.
=========================================
-
20.01.07 11:06 #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ß TomJava 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
-
24.01.07 12:43 #3
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
-
PDF als BLOB in DB ablegen ORACLE
Von cullmann im Forum Relationale DatenbanksystemeAntworten: 10Letzter Beitrag: 14.02.07, 15:54 -
Oracle 9.2; Index erstellen, Statistiken
Von tplanitz im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 03.12.06, 08:42 -
Oracle 9.2i; BLOB feld in char
Von tplanitz im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 01.10.06, 08:30 -
iReport und oracle.sql.BLOB
Von ioanaDE im Forum JavaAntworten: 0Letzter Beitrag: 21.09.06, 15:24 -
Oracle (Blob einfügen)
Von chrishawaii im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 26.03.05, 23:12





Zitieren

Login





