2017-01-03 45 views
0

我有一个像下面需要性能,使用聚合N1QL

select sum(ARRAY_SUM(DailyCampaignUsage.`data`[*].cost)) revenue from 
Inheritx DailyCampaignUsage WHERE DailyCampaignUsage._type='DailyCampaignUsage' 

它正在12.3s

这里计数(ARRAY_SUM(DailyCampaignUsage。data [*]。成本))查询它是51k

我该如何改善它的性能? 我有像下面的索引

CREATE INDEX `abc` ON `Inheritx`(`_type`) USING GSI 

回答

1

使用覆盖部分索引。

CREATE INDEX idx_covering ON Inheritx(_type, data[*].cost) WHERE _type = 'DailyCampaignUsage'; 

select sum(ARRAY_SUM(DailyCampaignUsage.`data`[*].cost)) revenue 
from Inheritx DailyCampaignUsage USE INDEX (idx_covering) 
WHERE DailyCampaignUsage._type='DailyCampaignUsage' 
+0

感谢它现在正在1S 但我怎么能提高其性能 ROUND(SUM(CASE WHEN DailyCampaignUsage.day '2016年12月1日' 之间以及 '2016年12月5日',那么ARRAY_SUM(DailyCampaignUsage.'data' [*]。cost)ELSE 0 END) –