यह देखते हुए कि आपके पास पहले से ही ip_start
. पर एक अनुक्रमणिका है , यह मानते हुए कि आप प्रति आईपी एक एक्सेस बनाना चाहते हैं (1234
इस उदाहरण में):
select organization from (
select ip_end, organization
from iptable
where ip_start <= 1234
order by ip_start desc
limit 1
) subqry where 1234 <= ip_end
यह आपकी अनुक्रमणिका का उपयोग स्कैन शुरू करने के लिए करेगा जो limit 1
. के कारण तुरंत बंद हो जाता है . लागत केवल एक साधारण अनुक्रमित पहुंच की तुलना में मामूली अधिक होनी चाहिए। बेशक, यह तकनीक इस तथ्य पर निर्भर करती है कि ip_start
. द्वारा परिभाषित श्रेणियां और ip_end
कभी ओवरलैप न करें।
आपके मूल दृष्टिकोण के साथ समस्या यह है कि MySQL, इस बाधा से अनजान होने के कारण, केवल यह निर्धारित करने के लिए अनुक्रमणिका का उपयोग कर सकता है कि स्कैन को कहां से शुरू या बंद करना है (यह सोचता है) आपकी क्वेरी के लिए सभी मैचों को खोजने के लिए इसकी आवश्यकता है।