使用 ORDER BY 的 Couchbase N1QL SELECT 查询非常慢

Couchbase N1QL SELECT query using ORDER BY is very slow

以下查询很慢:

select meta(d).id, timestamp_utc, d.headline, d.text from data_01 d where type="news" and topic="some_news" and timestamp_utc is not null order by timestamp_utc asc limit 1;

我创建了以下索引/索引:

 CREATE INDEX `idx_timestamp_utc` ON `data_01`((-str_to_millis(`timestamp_utc`)))
 CREATE INDEX `idx_timestamp_utc_some_news` ON `data_01`(`timestamp_utc`) WHERE ((`type` = "news") and (`topic` = "some_news"))
 CREATE INDEX `idx_topic_and_timestamp_utc` ON `data_01`(`topic`,(-str_to_millis(`timestamp_utc`)))
 CREATE INDEX `idx_type_news_topic_some_news_timestamp_utc` ON `data_01`((-`timestamp_utc`)) WHERE ((`type` = "news") and (`topic` = "some_news"))

我发现了类似的问题,但给出的修复和建议都不起作用。

感谢您的回复来解决这个问题!

我是运行Couchbase 4.5.1企业版(build-2844)

在 CB 4.5.0 及更高版本中尝试使用以下索引之一并修改下面的查询。 该索引可用于任何主题 主题上的查询谓词是相等的改变顺序以包含主题不会改变结果并且匹配查询顺序与索引键顺序相同并且查询将避免排序。

CREATE INDEX `idx_some_news_timestamp_utc` ON `data_01`(`topic`,`timestamp_utc`) WHERE type = "news";
CREATE INDEX `idx_some_news_timestamp_utc_headline_text` ON `data_01`(`topic`,`timestamp_utc`,headline, text) WHERE type = "news";

SELECT meta(d).id, d.timestamp_utc, d.headline, d.text FROM data_01 d
WHERE type="news" AND topic="some_news" AND timestamp_utc IS NOT NULL
ORDER BY topic, timestamp_utc ASC LIMIT 1;