जाहिर है, एक प्रक्षेप खोज करने के लिए, आपको कुछ प्रकार की कुंजी की आवश्यकता होती है जिसके लिए ऑर्डर देने से अधिक ज्ञात होता है - आपको संभावित दूरी का अनुमान लगाने के लिए कुंजियों पर कम्प्यूटेशन करने में सक्षम होना चाहिए, न कि यह निर्धारित करने के लिए कुंजियों की तुलना करें जो अधिक से अधिक है या कम।
जहां तक डाटासेट जाने के गुणों के रूप में, यह ज्यादातर एक संपत्ति की बात आती है: एक संभावना है कि चाबियाँ हैं यथोचित समान रूप से (या कम से कम जाहिर) संभावनाओं की सीमा में वितरित कर देती। उसके बिना, एक प्रक्षेप की खोज वास्तव में एक द्विआधारी खोज की तुलना में धीमी हो सकती है ।
उदाहरण के लिए, कम-केस अक्षरों के तारों के साथ सेट के रूप में एक डेटा पर विचार करें। मान लेते हैं कि आपके पास एक कुंजी है जो "x" से शुरू होती है। एक प्रक्षेप खोज स्पष्ट रूप से इंगित करेगी कि आपको सेट के अंत के बहुत करीब खोज शुरू करनी चाहिए। यदि, हालांकि, आपकी अधिकांश कुंजियाँ वास्तव में 'z' से शुरू होती हैं, और 'a' हालांकि 'y' से किसी भी चीज़ के साथ लगभग कोई भी नहीं है, तो आप जिसे खोज रहे हैं वह वास्तव में सेट की शुरुआत के बहुत करीब हो सकता है। खोज की शुरुआत के करीब पहुंचने से पहले यह काफी संख्या में पुनरावृत्तियां ले सकता है / कर सकता है जहां स्ट्रिंग 'w' से शुरू होती है। प्रत्येक पुनरावृत्ति विचार से सेट किए गए डेटा का केवल ~ 10% निकाल देगी, इसलिए यह शुरुआत से करीब पहुंचने से पहले कई पुनरावृत्तियों को ले जाएगा जहां कुंजी 'w' से शुरू होती है।
इसके विपरीत, एक द्विआधारी खोज मध्य में शुरू होती है , दूसरे पुनरावृत्ति में एक-चौथाई निशान पर पहुंचती है, तीसरे पर एक-आठवां निशान, और इसी तरह। इसका प्रदर्शन कुंजियों में तिरछा होने से लगभग अप्रभावित रहेगा। प्रत्येक पुनरावृत्तियों को विचार से आधा डेटा सेट हटा दिया जाएगा, जैसे कि कुंजी समान रूप से वितरित की गई थी।
मैं, हालांकि, यह जोड़ने के लिए जल्दबाजी करता हूं कि यह वास्तव में एक तिरछा खोज करने के लिए काफी तिरछा वितरण करता है, जो कि द्विआधारी खोज की तुलना में काफी खराब है। उदाहरण के लिए, यह स्थानीयकृत क्लस्टरिंग की उचित मात्रा की उपस्थिति में भी काफी अच्छा प्रदर्शन कर सकता है।
मुझे यह भी उल्लेख करना चाहिए कि एक प्रक्षेप खोज को रैखिक प्रक्षेप का उपयोग करने की आवश्यकता नहीं है। उदाहरण के लिए, यदि आपकी कुंजियों को कुछ गैर-रेखीय वितरण (जैसे, घंटी-वक्र) का पालन करने के लिए जाना जाता है, तो यह एक समान वितरण होने से परिणामों को थोड़ा अलग करने के लिए प्रक्षेप समारोह में खाते में लेना काफी आसान हो जाता है।