postgres多维数据集欧氏距离查询性能问题

时间:2019-06-16 10:28:24

标签: postgresql performance cube

我有一个postgres数据库,其中包含一个文档表,该文档表具有100个维度的单词嵌入,并用于查找相似的文档。

main.c:3:7: error: initializer element is not constant
 int x = foo();
         ^~~

我已经安装了CREATE TABLE documents( id bigint, title text, body text, vector double[], PRIMARY KEY(id) ); 扩展名,并使用它来根据所选文档的相似性对文档进行排序(如here所述):

cube

我在这里设置了索引: SELECT id,title,body FROM documents ORDER BY cube(documents.vector) <-> '(0.0990813672542572021,.. 0.0537704713642597198)'::cube LIMIT 10;

我得到了预期的结果,但是对于约200万行的表,查询时间非常长,大约30-45秒。如何提高性能以将其降低到可接受的水平,即<1秒钟(百万行)?

1 个答案:

答案 0 :(得分:0)

doc使用CUBE的正确方法:

SELECT c FROM test ORDER BY c <-> cube(array[0.5,0.5,0.5]) LIMIT 1;