0
我试图从一个非常大的数据库(每月1.5亿文件)在指定日期(变量)Couchbase和N1QL中获取最新文档。日期的最新文档可以是任何时间(前一秒或上一个月)。请注意,日期在Unix Epoch中。下面是文档的结构:如何从特定日期获取最新文档?
{
"type" : "person",
"id":"001",
"name":"John Doe",
"date":"1491199810.435"
}
我有指数日期:
CREATE INDEX `date` ON `mytable`(`date`) WITH { "defer_build"=true }
通常在我处理的Postgres,我通常会做:
SELECT * WHERE date <="1491199813.000" ORDER BY date DESC LIMIT 1;
有指标Postgres中的日期恰好过了毫秒级响应。
但是,Couchbase ORDER BY ... LIMIT是非常缓慢的。在相同的硬件和相同的数据上需要几分钟的时间。
肯定会有一种有效的方式从Couchbase N1QL获取指定日期的单个最新文档,但我还找不到它。
你有什么想法吗?
你是在暗示从索引中选择?这显然不起作用[ { “code”:12003, “msg”:“Keyspace not found keyspace forex_dt - cause:No bucket named forex_dt”, “query_from_user”:“SELECT * FROM'forex_dt_desc' WHERE'instruments '='EURGBP'和'dt' <1492504798 LIMIT 1“ } ]。你能否详细说明一下? – uzla
Typo修复它。如果您需要仪器,也可以将查询更改为CREATE INDEX'forex_ddesc' ON'forex'(instruments,-TONUMBER('date')); SELECT * FROM'forex' WHERE instruments ='EURGBP,-TONUMBER('date')> = -1491199813.000 ORDER BY工具,-TONUMBER('date')限制1; – vsr
它的工作原理!辉煌!十分感谢! – uzla