以下查询需要2分钟,可以进一步调整

时间:2019-06-05 10:00:23

标签: n1ql

请帮助我调整以下查询: SELECT META(m).id,m.sch_name AS名称FROM pricing_qa_1 AS m  m.d_type =“ mprisch” AND r  IN(从pricing_qa_1中选择RAW META(a).id,作为unaest a.prod_prof AS p,其中a.dtype =“ prisch” AND(p.prod_cd =“ WMOBAC000A1”))。

2 个答案:

答案 0 :(得分:0)

每个文档中都有一个数组,并且您对包含prod_id值“ WMOBAC000A1”的文档感兴趣。那正确吗?

您应该可以使用ANY运算符完全消除UNNEST:

https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/collectionops.html

答案 1 :(得分:0)

将数组索引与此处介绍的ANSI JOIN结合使用(示例12、13、14)

CREATE INDEX ix1 ON pricing_qa_1 ( DISTINCT v.prod_cd FOR v IN prod_prof END ) WHEERE dtype = "prisch";
CREATE INDEX ix2 ON pricing_qa_1 ( DISTINCT pri_sch_ref ) WHEERE dtype = "mprisch";

SELECT META(m).id , m.sch_name AS name
FROM pricing_qa_1 AS p
JOIN pricing_qa_1 AS m
ON ANY mv IN m.pri_sch_ref SATISFIES mv = META(p).id END AND m.dtype = "mprisch"
WHERE p.dtype = "prisch" AND ANY v IN p.prod_prof SATISFIES v.prod_cd = "WMOBAC000A1" END ;