私のデータベーステーブル(geo ip lookup)には7つの列があり、そのうち2つの列が<composite-id>を構成しています。ここで、最初の2つの列を使用して値を検索すると、レコードをフェッチするのに12〜14秒かかります。
私のDAOコードは次のようになります。
String queryString = "from Igeo igeo where igeo.ip_from <= " + ip
+ "and igeo.ip_to >= " + ip;
Query q = session.createQuery(queryString);
List<Igeo> igeoList = q.list();
if(igeoList.size() > 0){
Igeo igeo = igeoList.get(0);
ISP = igeo.getIsp();
...
...
}
* Igeo=java表現テーブルのクラス
**レコードは、ipがcomposite-id列の値の間にある場合にフェッチされます。
ip_from = 1; ip_to = 3; ip = 2;
したがって、上の行が返されます
このテーブルはレコードの読み取りにのみ使用されます。上記よりも効率的なqueryStringを提案してください