JOIN FROM . में तालिकाओं को सही क्रम में रखकर आदेश को बाध्य किया जा सकता है खंड:
-
MySQL का एक विशेष खंड है जिसे
STRAIGHT_JOIN. कहा जाता है जो आदेश को महत्वपूर्ण बनाता है।यह
b.id. पर एक अनुक्रमणिका का उपयोग करेगा :SELECT a.Name, b.Status FROM a STRAIGHT_JOIN b ON b.ID = a.StatusIDऔर यह
a.StatusID. पर एक अनुक्रमणिका का उपयोग करेगा :SELECT a.Name, b.Status FROM b STRAIGHT_JOIN a ON b.ID = a.StatusID -
Oracle का एक विशेष संकेत है
ORDEREDJOIN. को लागू करने के लिए आदेश:यह
b.id. पर एक अनुक्रमणिका का उपयोग करेगा याb. पर हैश तालिका बनाएं :SELECT /*+ ORDERED */ * FROM a JOIN b ON b.ID = a.StatusIDऔर यह
a.StatusID. पर एक अनुक्रमणिका का उपयोग करेगा याa. पर हैश तालिका बनाएं :SELECT /*+ ORDERED */ * FROM b JOIN a ON b.ID = a.StatusID -
SQL सर्वर में
FORCE ORDERनामक एक संकेत होता है ऐसा ही करने के लिए:यह
b.id. पर एक अनुक्रमणिका का उपयोग करेगा याb. पर हैश तालिका बनाएं :SELECT * FROM a JOIN b ON b.ID = a.StatusID OPTION (FORCE ORDER)और यह
a.StatusID. पर एक अनुक्रमणिका का उपयोग करेगा याa. पर हैश तालिका बनाएं :SELECT * FROM b JOIN a ON b.ID = a.StatusID OPTION (FORCE ORDER) -
PostgreSQL दोस्तों, क्षमा करें। आपकी TODO सूची कहते हैं:
<ब्लॉककोट>अनुकूलक संकेत (नहीं चाहिए)
ऑप्टिमाइज़र संकेतों का उपयोग ऑप्टिमाइज़र में समस्याओं को हल करने के लिए किया जाता है। इसके बजाय हम समस्याओं की सूचना देंगे और उन्हें ठीक करेंगे।
तुलना में आदेश के लिए, यह किसी भी RDBMS में मायने नहीं रखता है , AFAIK।
हालांकि मैं व्यक्तिगत रूप से हमेशा यह अनुमान लगाने की कोशिश करता हूं कि कौन सा कॉलम खोजा जाएगा और इस कॉलम को बाईं ओर रखा जाएगा (इसके लिए यह एक lvalue जैसा प्रतीत होता है। )।
देखें यह उत्तर अधिक विवरण के लिए।