JPA Query - Verbesserungsvorschlag

t.stein

Mitglied
Hallo Zusammen,

ich habe folgendes JPA Query zusammen gebaut:

Java:
SELECT c FROM CommunicationsLog c WHERE c.client LIKE :railexpression AND c.sender LIKE :searchquery"
+ " OR c.receiver LIKE :searchquery OR c.messageid LIKE :searchquery OR c.state LIKE :searchquery"
+ " OR c.messagetype LIKE :searchquery OR c.timestamp LIKE :searchquery"

Gibt es Möglichkeiten die Performance durch einen anderen Ausdruck oder vielleicht einer anderen Technologie z.B. "Criteria-API" zu verbessern?

gruß und danke
 

musiKk

Top Contributor
Das ist zu bezweifeln. Das erzeugte SQL wird ebenfalls viele LIKE-Ausdrücke enthalten und die sind immer recht langsam, da die Datenbank keinerlei Nutzen aus Indizes ziehen kann.
 

JimPanse

Bekanntes Mitglied
Abhilfe kann hier nur das nutzen einer Funktion die durch das RDBMS vorgegeben wird z.b. für MySQL:

MySQL :: MySQL 5.0 Reference Manual :: 11.9 Full-Text Search Functions

Mit setzen eines Fulltext-Index kannst du eine "Like" suche über mehrere Spalten erzeugen. Damit verlierst du zwar die Unabhängigkeit zum RDBMS aber hättest auf jedenfall eine bessere Performane! Eine Lösung durch eine java basierende Lösung wirst du kaum finden

Greetz
 
M

Marcinek

Gast
Das ist zu bezweifeln. Das erzeugte SQL wird ebenfalls viele LIKE-Ausdrücke enthalten und die sind immer recht langsam, da die Datenbank keinerlei Nutzen aus Indizes ziehen kann.

Natürlich kann man Indizes bei Likesuchen ausnutzen. Es geht nur dann nicht mehr, wenn das erste Zeichen ein Wildcard ist.
 

Ähnliche Java Themen

Neue Themen


Oben