使用 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"))
- None 这给了我比 1 分钟更好的表现。
- 桶topic中有300万篇文档="some_news"有300k
文档。
- type="news" 有大约 200 万个文档。
- 字段 timestamp_utc 具有以下格式:“2017-01-01T00:00:00+00:00”。
- 字段标题的平均长度约为 100 个字符。
- 字段文本的平均长度约为 2000 个字符。
我发现了类似的问题,但给出的修复和建议都不起作用。
感谢您的回复来解决这个问题!
我是运行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;
以下查询很慢:
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"))
- None 这给了我比 1 分钟更好的表现。
- 桶topic中有300万篇文档="some_news"有300k 文档。
- type="news" 有大约 200 万个文档。
- 字段 timestamp_utc 具有以下格式:“2017-01-01T00:00:00+00:00”。
- 字段标题的平均长度约为 100 个字符。
- 字段文本的平均长度约为 2000 个字符。
我发现了类似的问题,但给出的修复和建议都不起作用。
感谢您的回复来解决这个问题!
我是运行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;