Vergleich mit CLOB

Status
Nicht offen für weitere Antworten.

GilbertGrape

Bekanntes Mitglied
Hallo mal wieder,

es hat zwar nicht direkt mit Hibernate zu tun, aber da ich Hibernate einsetze und es auch nicht unbedingt Datenbankprogrammierung ist, setz ichs mal hier rein.

Ich möchte in einer Datenbank nach Datensätzen suchen und dabei mit einem CLOB vergleichen (und noch eine andere Bedingung).
Der HQL-Query dazu sah bis jetzt so aus:
Code:
from Paragraph p where p.type=:type and  p.text like :text
Ab einer Stringlänge von 3956 macht Oracle da nicht mehr mit, deshalb jetzt meine Frage: Was tun? :)
Ich hab mir überlegt, im Query nur nach der ersten Bedingung zu filtern und dann alle einzeln durchzugehen und zu vergleichen.
Wenn ich mir den Iterator hole, liest er doch immer nur einen ein oder? Oder muss ich das dann auch wieder first und max Result machen?
Oder gibts noch ne andere Möglichkeit?

Gruß, Gilbert

Edit: Ich habs gerade mal getestet. Wenn ich es mit dem Iterator mache (also alle einzeln durchgehe), dann ist das viiiel langsamer als direkt mit dem like-Statement und in der Datenbank sind noch lang nicht so viel Einträge wie es mal werden. :( Als Kompromiss könnte ich ja die String-Länge vorher abfragen und dann die eine oder andere Variante nehmen.
Aber vielleicht hat ja auch noch jemand eine Idee wie ich es einigermaßen performant hinkriege.
 
Zuletzt bearbeitet:
M

maki

Gast
>> Ich möchte in einer Datenbank nach Datensätzen suchen und dabei mit einem CLOB vergleichen

Das an sich ist imho keine gute Idee, viel zu ressourcenaufwändig.
 

void

Mitglied
Hast du dir schonmal Hibernate Search angeschaut? Das benutzt intern Lucene um einen Volltextindex aufzubauen. Wenn du die CLOB-Spalte indexieren lässt sollte die Suche um einiges schneller gehen.

/void
 

GilbertGrape

Bekanntes Mitglied
Hallo,
vielen Dank erstmal für den Tipp!

Falls es jemanden interessiert wie ich es jetzt gelöst habe: Ich berechne den MD5-Hashwert des Textes und speicher den mit ab. Ich brauch dann nur noch nach dem Hashwert zu suchen.

Gruß, Gilbert
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen


Oben