PostgreSQLに保存されているStartIP、End IP、Geo-Locationsで200万のIPアドレスと2500万のIP範囲を取得しました。2500万のデータベースからそれらの200万のIPの地理的位置を検索する効率的な方法はありますか?私がしたことは、IPアドレスが開始IPと終了IPの間にあるかどうかを比較し、対応する場所を検索することでした。しかし、これは永遠にかかるようです。おそらくこれは、次の場所から{7、13、31、42}を検索するなど、一連の範囲から整数の束を検索するようなものです。
Start End Loc
1     10  US
11    20  US
21    26  CN
29    32  SE
33    45  CA
と戻る:
7  US
13 US
31 SE
42 CA
範囲が必ずしも接続されていない場合や、サイズが同じでない場合があることに注意してください。ありがとうございました!
編集
具体的な例として、私が扱っているデータは次のとおりです。
     start_ip     |      end_ip      | country |  region   |   city    | 
------------------+------------------+---------+-----------+-----------+-
 1.33.254.73/32   | 1.33.254.73/32   | jpn     | 33        | kurashiki | 
 1.39.1.0/32      | 1.39.4.255/32    | ind     | mh        | mumbai    | 
 1.40.144.0/32    | 1.40.145.255/32  | aus     | ns        | fairfield | 
 1.40.235.0/32    | 1.40.242.255/32  | aus     | ns        | sydney    | 
 1.44.28.0/32     | 1.44.29.255/32   | aus     | vi        | melbourne | 
 1.44.82.0/32     | 1.44.83.255/32   | aus     | vi        | melbourne | 
 1.44.92.0/32     | 1.44.93.255/32   | aus     | vi        | melbourne | 
 1.44.128.0/32    | 1.44.129.255/32  | aus     | vi        | melbourne | 
 1.44.220.0/32    | 1.44.221.255/32  | aus     | vi        | melbourne | 
 ......
 ......
そして、クエリは次のようなものです。
 75.149.219.61/32
 68.239.61.29/32
 96.41.50.165/32
 183.62.126.7/32
 ......