首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我似乎无法减少我的查询次数

我似乎无法减少我的查询次数
EN

Stack Overflow用户
提问于 2018-06-09 04:11:15
回答 1查看 42关注 0票数 0

我在google上做了一个搜索,想知道去哪里询问查询分析,但一切都把我带回了这里。如果我错了,我道歉,这应该放在别的地方。

以下是我的数据库(运行Neo4j服务器v3.4)的当前统计数据:

我的Neo4jClient查询:

代码语言:javascript
运行
复制
var query = graphClient
                 .Cypher
                 .Match("(cp:CurrencyPair) - [:Currency_Pair] -> (mkt:MarketInfo)")
                 .With("mkt, cp")
                 .Where((CurrencyPair cp) => cp.Name == Pair.Name)
                 .AndWhere((MarketInfo mkt) => mkt.StartTicksUTC >= startTicks)
                 .AndWhere((MarketInfo mkt) => mkt.EndTicksUTC <= endTicks)
                 .With("mkt, cp")
                 .OrderBy("mkt.EndTicksUTC DESC")
                         .Match("(mkt) -[Ask_Input_Data] - (a:Ask)")
                         .With("mkt, cp, a")
                         .Match("(mkt) -[Bid_Input_Data] - (b:Bid)")
                         .With("mkt, cp, a, b")
                         .Return((mkt, cp, a, b) => new
                         {
                             MarketInfo = mkt.As<MarketInfo>(),
                             CurrencyPair = cp.As<CurrencyPair>(),
                             Ask = a.As<Ask>(),
                             Bid = b.As<Bid>()
                         });

生成的Neo4j查询:

代码语言:javascript
运行
复制
profile 
MATCH (cp:CurrencyPair) - [Currency_Pair] -> (mkt:MarketInfo) 
WITH mkt, cp 
WHERE (cp.Name = "AUD/CAD") AND (mkt.StartUTC >= "2012-01-10T15:50:00+00:00" ) AND (mkt.StartUTC <= "2012-01-10T16:00:00+00:00" ) 
WITH mkt, cp 
ORDER BY mkt.EndTicksUTC DESC 

MATCH (mkt:MarketInfo) <-[Ask_Input_Data] - (a:Ask) 
WITH mkt, cp, a 
MATCH (mkt:MarketInfo) <-[Bid_Input_Data] - (b:Bid) 
WITH mkt, cp, a, b 

RETURN mkt AS MarketInfo, cp AS CurrencyPair, a AS Ask, b AS Bid

正如您所看到的,我正在尝试查询数据库以查找与给定货币节点相关的所有"MarketInfo“节点,然后返回仅在两个日期之间的节点。

运行此查询,需要7秒才能运行:

并返回10个节点、15个关系

我在数据库中有索引:

索引

代码语言:javascript
运行
复制
   ON :NewsEvent(Date) ONLINE

   ON :MarketInfo(EndTicksUTC) ONLINE

   ON :MarketInfo(EndUTC) ONLINE

   ON :MarketInfo(EndUTCTicks) ONLINE

   ON :NewsEvent(EventID) ONLINE 

   ON :Ask(Id) ONLINE 

   ON :Component(Id) ONLINE 

   ON :NewsEvent(Id) ONLINE 

   ON :MarketInfo(Id) ONLINE 

   ON :Bid(Id) ONLINE 

   ON :NewsEvent(Id, Date) ONLINE 

   ON :MarketInfo(Interval) ONLINE 

   ON :MarketInfo(Name) ONLINE 

   ON :MarketInfo(StartTicksUTC) ONLINE

   ON :MarketInfo(StartUTC) ONLINE 

   ON :MarketInfo(StartUTCTicks) ONLINE 

关于如何加速这个查询,您有什么想法吗?也许我就是搞错了?在Neo4j上说服我的老板而不是使用“久经考验的”MS SQL Server变得越来越难了……

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50767789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档