簡體   English   中英

密碼:使用WHERE子句或MATCH屬性定義進行完全匹配嗎?

[英]Cypher: Use WHERE clause or MATCH property definition for exact match?

在Neo4j(3.0版)中,以下查詢返回相同的結果:

1. MATCH (a:Label) WHERE a.property = "Something" RETURN a
2. MATCH (a:Label {property: "Something"}) RETURN a

在處理一些大型數據集時,我注意到(並使用EXPLAINPROFILE進行了驗證),在某些情況下,第二個查詢之類的查詢性能更好,更快。 雖然存在其他實例,兩個版本的性能均相同,但我還沒有看到第一個版本的性能更好的實例。

neo4j文檔和教程也有所不同。 兩者之間沒有明確的比較。 docs和tut使用這兩個版本,通常傾向於第一個版本(可能是因為只能使用WHERE子句來完成不完全匹配)。 但是指南還指出,縮小搜索范圍的越早,搜索速度就越快。

  1. 我對兩個版本將始終返回相同的結果嗎?
  2. 我認為第二個版本通常會更好,因為它會縮小搜索范圍,這對嗎?
  1. 不,兩者基本上都對完全相同的查詢計划進行評估。 由於Neo4j使用基於成本的優化器,因此查詢計划可能會隨時間而改變,因為該優化器會考慮更改(也許現在有更多數據,因此索引查找比NodeByLabelScan便宜)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM