データベースのブースト共有メモリに約 800,000 行のデータが格納されています。データの形式は次のとおりです。
Id Color Length Size
1 1 2 4
2 3 4 5
3 2 2 0
4 1 2 4......and so on
色は 1 ~ 12 の値、長さは 1 ~ 4、サイズは 1 ~ 5 です。ID、長さ、色、サイズは、共有メモリ内の 800,000 サイズの個別のベクトルに格納されます。したがって、Id には Id ベクトル、Color には Color ベクトルなどがあります。
計算を実行する前に、データをフィルター処理したいと考えています。したがって、色が1で長さが2でサイズが4のデータ、つまり上記の場合は行1と4のデータが必要です。forループを使用せずにデータをフィルタリングし、800,000枚の画像すべてを調べて状態を確認する効率的な方法はありますか?
現在、mysql ステートメントを使用して、条件を満たすデータの ID を取得しています。
"select Id from features_table where Color=1 and Length=2 and Size =4"
しかし、これを行うより速い方法はありますか?または、この方法に固執する必要がありますか?より高速な方法を探しているので、データベースから Id を取得するとアルゴリズムの実行時間が長くなるかどうかはわかりません。
この場合、他にどのようなオプションを検討できますか? Hash table、B-Tree、Binary Search tree について読みましたが、このケースに適したものはどれなのか混乱しています。この場合、kd-tree は役に立ちますか?多くの画像は色、長さ、サイズの組み合わせが同じである可能性があるためです。kd-tree が正しいかどうかはわかりません。kd-tree に使用される opencv の FLANN について読みましたが、この場合に役立つ例やリソースはありますか? または、組み込みの C++ ライブラリはありますか?