2017-01-03 35 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) –