2010-06-07 11 views

उत्तर

22

RedUCED एक 'सर्वश्रेष्ठ प्रयास' DISTINCT की तरह है। जबकि DISTINCT गारंटीकृत कोई गारंटी नहीं देता है, REDUCED कुछ, सभी, या कोई डुप्लीकेट समाप्त नहीं कर सकता है।

क्या बात है? खैर DISTINCT महंगा हो सकता है; रेड्यूक्ड प्रत्येक पंक्ति को याद किए बिना सीधा डुप्लिकेशंस काम कर सकता है (उदा। तुरंत दोहराए गए परिणाम हटाएं)। कई अनुप्रयोगों में जो काफी अच्छे हैं।

यह कहकर कि मैंने कभी भी लालसा का उपयोग नहीं किया है, मैंने कभी भी किसी को भी लालसा का उपयोग नहीं देखा है, और किसी टॉक या ट्यूटोरियल में उल्लिखित रेड्यूकड को कभी नहीं देखा है।

+1

बस इस पाया इस्तेमाल किया गया है: http://www.franz.com/agraph/support/documentation/current /twinql-tutorial.html#header3-92 कहता है - यदि आपको हटाए जाने के लिए डुप्लिकेट की आवश्यकता नहीं है, लेकिन आपको अनावश्यक प्रविष्टियों की आवश्यकता नहीं है, तो यह भी होगा यदि आप सही होने के लिए सही मायने में निर्भर हैं, तो पूर्व पर्याप्त - तो आप DISTINCT के बजाय RedUCED निर्दिष्ट कर सकते हैं। ** यह एलेग्रोग्राफ को डुप्लिकेट मानों को त्यागने की इजाजत देता है यदि ऐसा करने के लिए फायदेमंद है। ** – Tomalak

+3

हम बहुत बड़े परिणाम सेट से निपटने के दौरान लालसा का उपयोग करते हैं जहां DISTINCT बहुत धीमी होगी, लेकिन बहुत सारे डुप्लिकेट हैं। यह बहुत दुर्लभ है कि यह उपयोगी है हालांकि। –

1

मेरे दिमाग में (और अपने स्वयं के SPARQL कार्यान्वयन में) RedUCED प्रभावी रूप से एक वैकल्पिक डिस्टिंट बाधा है जो इंजन को आवश्यक होने पर ही लागू किया जाता है यानी क्वेरी इंजन तय करेगा कि डुप्लिकेट परिणामों को खत्म करने के लिए या नहीं क्वेरी

मेरे अपने कार्यान्वयन में जब कम मैं केवल डुप्लिकेट को निकाल अगर OFFSET/सीमा भी इस्तेमाल किया गया है