2015-08-20 4 views
14

मैं नियो 4 जे के लिए नया हूं, और पिछले कुछ दिनों में साइफर क्वेरी भाषा सीख रहा हूं।नियो 4 जे: साइफर जहां क्लॉज बनाम घुंघराले ब्रेसेस मैच क्लॉज में - कौन सा बेहतर है?

मुझे एहसास हुआ कि मैं इस तरह अपनी क्वेरी लिख सकते हैं ...

MATCH (b:Beverage)<-[:likes]-(p:Person)-[:likes]->(r:Restaurant) 
WHERE b.name = 'Beer' and r.name = 'KFC' 
RETURN p.name 

... या इस तरह ...

MATCH (b:Beverage{name:'Beer'})<-[:likes]-(p:Person)-[:likes]->(r:Restaurant{name:'KFC'}) 
RETURN p.name 

किस तरीके से प्रदर्शन के मामले में बेहतर है? और क्यों?

धन्यवाद।

+1

ये प्रश्न प्रदर्शन में समान हैं। यह सिर्फ एक बात है कि आप प्रश्नों को कैसे लिखना पसंद करते हैं। –

उत्तर

6

मुझे खेद है, लेकिन @ ए-रॉडिन का जवाब यहां गलत है: आपके दोनों विवरणों के परिणामस्वरूप एक ही प्रश्न योजना है। आप EXPLAIN के साथ कथन को उपसर्ग करके और क्वेरी योजनाओं की तुलना करके सत्यापित कर सकते हैं।

पठनीयता के लिए मैं प्रश्न में क्वेरी संरचना चाहते हैं:

MATCH (p:Person)-[:likes]->(b:Beverage{name:'Beer'}), 
     (p)-[:likes]->(r:Restaurant{name:'KFC'}) 
RETURN p.name 

क्वेरी सादे अंग्रेजी में एक वाक्य की तरह लिखा है "एक व्यक्ति है कि बीयर पसंद करती है से मेल खाते हैं और और केएफसी रेस्तरां की तरह"।

+0

हां, आप सही हैं, मुझे 'व्याख्या' के आदेश के बारे में पता नहीं था। –

+1

बहुत उपयोगी पोस्ट, धन्यवाद। मुझे नहीं पता था कि मैं अल्पविराम के साथ 'MATCH' कथन को तोड़ सकता हूं। डिबगिंग उद्देश्यों के लिए 'EXPLAIN' का उपयोग करने के संबंध में इस आलेख पर ठोकरें: http://neo4j.com/blog/neo4j-detecting-potential-typos-using-explain/ – limc

संबंधित मुद्दे