• 締切済み

効率のよい検索

処理ロジックについてご教授願いたいです。 点1---点2---点3---点4     線1    線2     線3 ◆線マスタ 線1は、点1・点2で構成 線2は、点2・点3で構成 線3は、点3・点4で構成 上記のように、点1~点4までは3つの線・6つの点で構成されているとします。 以下のように線2が欠落して情報が無い場合に線1、線3と線マスタを使用し 線2を補いたいのです。線形検索で順に検索すれば可能ですが、 何か効率のよい検索方法をどなたかしっていたら教えてください。 Javaのバッチで実装しようと思っています。 点1---点2    点3---点4     線1           線3 データ量が数十万件あるため何か効率のよい方法がないか考えている最中です。 考えた方法 (1)単純にDBを線形検索 →データ量が多いので非効率 (2)DBより点2以上点3以下を抽出し、配列に格納し配列内を検索 →点情報(数値)がシーケンスになっていないため抽出対象件数が多く配列が膨大になり   メモリが不安 (3)配列のインデックスを点情報(数値)にし線を検索 →点情報(数値)が万単位になるためメモリが不安 以上

みんなの回答

  • sppla
  • ベストアンサー率51% (185/360)
回答No.1

私は元プログラマーで別段アルゴリズムに強いわけではないですが、本質問にまともな回答がつくとは思えません。質問文の情報量が不足しています。 点2に対し対応する点3を探すというようなテーマだと思います。 質問文からは点3の候補は数万から数十万程度あると予想します。 これに対し以下が不明です。  (1)各点はどのような情報を持つか。  (2)DBには何を使っているのか?  (3)点3はどのような基準で選択されるか。  (4)この作業は何回行うのか? 例えば上記で(1)各点は1次元上の点であり(2)DBにはSQLデータベースを用いており(3)点3は点2より大きいx座標を持つ中で最小のx座標を持つ点である、というような話であれば、そのようなデータを検索するSQL文を示せば回答になります。 また、この作業は何度も行われるものであれば、事前のデータのソートを考えてもいいかもしれません。 ご呈示の質問文の情報のみでは、まともな回答をするのは困難だと思われます。

関連するQ&A