〜300万行のテーブルがあります。各行は、5 つのプロパティを持つオブジェクトを表します。各プロパティ値は float で、範囲は 0 から 1 です。
次のように宣言されたテーブル
CREATE TABLE tbl (
OBJECT_ID integer,
property_1 float,
property_2 float,
property_3 float,
property_4 float,
property_5 float
);
指定されたオブジェクトに最も類似した最初の 10 個のオブジェクトを見つける必要があります。
私のクエリは次のとおりです。
select T2.OBJECT_ID,
sqrt(
(T1.property_1 - T2.property_1)^2 +
(T1.property_2 - T2.property_2)^2 +
(T1.property_3 - T2.property_3)^2 +
(T1.property_4 - T2.property_4)^2 +
(T1.property_5 - T2.property_5)^2
) similarity
from tbl T1, tbl T2
where T1.OBJECT_ID = 42
order by 2
limit 10;
最も類似したオブジェクトの検索のパフォーマンスを向上させるにはどうすればよいですか?
任意のソリューションが受け入れられます (oracle、postgres、noSQL、または C++)。