N1ql 需要很长时间才能执行

N1ql taking long time to execute

SELECT a.*, META(a).id FROM `pricing_qa_2` AS a
WHERE a.dtype = "qqcfxspd"  AND  1 = 1
ORDER BY LOWER(a.sch_name) ASC, a.aud_info.ts DESC  OFFSET 0 limit 24

上面的查询需要很长时间才能执行,你能为这个查询建议合适的索引吗?

首先要尝试的是 a.dtype 上的索引:

CREATE INDEX dtype_idx ON pricing_qa_2(dtype)

我不明白为什么你的查询中有 1 = 1 子句,但你应该删除它。

以下索引和查询组合应该使用索引顺序避免排序和由于排序而导致的额外提取。结帐说明。

CREATE INDEX ix1 ON pricing_qa_2(LOWER(sch_name), aud_info.ts DESC) WHERE dtype = "qqcfxspd";

SELECT a.*, META(a).id 
FROM  `pricing_qa_2`  AS a 
WHERE a.dtype = "qqcfxspd" AND LOWER(sch_name) IS NOT NULL
ORDER BY LOWER(sch_name) ASC, aud_info.ts DESC 
OFFSET 0 
LIMIT 24;

CREATE INDEX ix1 ON pricing_qa_2(dtype, LOWER(sch_name), aud_info.ts DESC);

SELECT a.*, META(a).id 
FROM  `pricing_qa_2`  AS a 
WHERE a.dtype = "qqcfxspd" 
ORDER BY LOWER(sch_name) ASC, aud_info.ts DESC 
OFFSET 0 
LIMIT 24;

感谢 Johan 和 vsr 的建议,帮助很大。 创建以下索引并在查询中进行少量更改后,我能够在几毫秒内获得结果。

REATE INDEX ix1 ON pricing_qa_2(LOWER(sch_name), aud_info.ts DESC) WHERE dtype = "qqcfxspd";

SELECT *, META().id FROM `pricing_qa_2` 
WHERE dtype = "qqcfxspd"  AND lower(sch_name) is not missing and aud_info.ts is not missing 
ORDER BY LOWER(ch_name) , aud_info.ts DESC  OFFSET 0 limit 24