我有一個非常簡單的密碼,這給我一個糟糕的表現。 我有約。 200萬用戶和60種圖書類別,用戶與類別之間的關係約爲2800萬。 當我這樣做暗號:Neo4j cyper性能簡單匹配
MATCH (u:User)-[read:READ]->(bc:BookCategory)
WHERE read.timestamp >= timestamp() - (1000*60*60*24*30)
RETURN distinct(bc.id);
它返回我2內8.5K行 - 2.5(第一次)分鐘
當我這樣做暗號:
MATCH (u:User)-[read:READ]->(bc:BookCategory)
WHERE read.timestamp >= timestamp() - (1000*60*60*24*30)
RETURN u.id, u.email, read.timestamp;
它返回55K 3到6(第一次)分鐘內的行。
我已經有用戶ID和電子郵件的索引,但我仍然認爲這種性能是不可接受的。任何想法我怎麼能改善這一點?
HI邁克爾,我第一次導入(書)和(BookCategory)作爲Neo4j中的節點,之後,基於歷史的csv文件,我創建了名爲[:READ]的屬性時間戳的關係,該關係將記錄何時該書讀。你是對的,我想知道哪些書類最近被閱讀過,這是我選擇類別的標準。最初,我試圖避免批量作業,因此不需要額外的工作量/維護。但是,如果這是唯一的方法(並且我認爲索引不會有幫助),那麼別無選擇。 – Dee
我真的不想在Lucene上創建索引,以便維護。如果我運行一個批處理作業並創建一個名爲'RECENTLY_READ'的屬性,我是否有必要說我還需要對它進行索引? – Dee
HI邁克爾,我測試了你的密碼,但有一個錯誤。我認爲WHERE子句不能與MERGE一起使用。 – Dee