এরউইন: আমি এই ধারণার সাথে একমত হতে পারি যে কঠোর অর্ডার দেওয়ার ফলে অনেকগুলি এমন উত্তেজনাপূর্ণ পরিস্থিতি তৈরি হতে পারে যেখানে অনুকূল পরিকল্পনার বিষয়টি বাতিল হয়ে যায়। আমি সম্প্রতি কাউকে তার ক্যোয়ারিতে এরকম কিছু রয়েছে বলে সাহায্য করেছি:
LEFT JOIN (
a
JOIN b ON a.id = b.a_id
JOIN c ON b.c_id = c.id
) ON a.id = something.a_id
LEFT JOIN (
table1 t1
JOIN table2 t2 ON t1.some_field = t2.other_field
JOIN talbe3 t3 ON t2.yafield = t3.something_else
) ON ....
repeat a few more times
তার ক্ষেত্রে এগুলির মধ্যে সবচেয়ে খারাপ ব্লকগুলি প্রায় 200k সারিগুলির মাধ্যমে প্রায় 20k বার (গণিতটি) একটি নেস্টেড লুপকে যুক্ত করে তোলে এবং যেহেতু কীগুলি সূচকগুলিতে ঠেলা যায়নি, এটি ছিল একটি ক্রমিক স্ক্যান। এর অর্থ হ'ল ক্যাসকেডিং পরিকল্পনার পরিবর্তনের কারণে সামগ্রিক ক্যোয়ারিটি চালাতে প্রায় 3 ঘন্টা সময় নিয়েছিল। বাম জোড় বিতরণ করে, কীগুলি নীচে নামানো যেতে পারে এবং কোয়েরিটি কয়েক সেকেন্ডের মধ্যে চলেছিল। অবশ্যই এটি হুবহু সমতুল্য নয় যার কারণেই পরিকল্পনাকারী তাদের সমতুল্য হিসাবে বিবেচনা করতে পারবেন না এবং তাই এই পরিকল্পনাটি হ্যাশ জোড় হিসাবে সনাক্ত করা এবং তারপরে একটি নেস্ট লুপটি করা হয়েছিল যা বেদনাদায়ক ধীর ছিল।
যে কোনও সময় আপনি দৃid়ভাবে একটি নির্দিষ্ট ক্রমে যোগ দিতে জোর করে যখন আপনি কেস ফিল্টার তথ্য পরিকল্পনা বাস্তবায়নের ক্ষেত্রে এখনও উপলব্ধ না হতে পারে এবং এমন কি পরে দ্রুত সূচী স্ক্যান / হ্যাশ যোগদানের পরে কী করা সম্ভব হতে পারে সেই ক্ষেত্রে এমন মামলাগুলি চালু করেন you নেস্টেড লুপ / সিক্যুয়ালি স্ক্যানের ক্ষেত্রে অনেক ধীর গতির কাজ হতে পারে এবং সুতরাং উপরের অংশটি অবিলম্বে সমতুল্য না হলেও এটি একই সমস্যা দেখায়।
USING
কিছুটা দ্রুত - কারণ ফলাফল ম্যাট্রিক্সে এটির একটি কম কলামের ফলস্বরূপ। আপনার অনুসন্ধানগুলি 2005 এবং 2008-এর তারিখের। আমি ধরে নিলাম যে কোনও সমস্যা এখনই ঠিক হয়ে গেছে। তবে , আমি একটি সম্ভাব্য সীমাবদ্ধতা দেখতে পাচ্ছি: এর সাথে যুক্ত জোগুলগুলি যথাযথভাবে প্রয়োগUSING
করতে হতে পারে , ফলে যোগদানকারী কলামটি একটি যৌথ পণ্য product এর মাধ্যমে JOIN- এর পুনঃক্রমের ক্ষেত্রে সম্ভাব্যভাবে সীমাবদ্ধ বিকল্পগুলি।