我有一个包含约三百万行记录的表格。每一行表示一个具有五个属性的对象。每个属性值都是浮点数,范围从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++)。