হ্যাশ, মার্জ এবং লুপ যোগদানের মধ্যে পার্থক্য?


40

এসকিউএল সার্ভারে আপনি যোগদানের ইঙ্গিতগুলি নির্দিষ্ট করতে পারেন:

  • হ্যাশ JOIN
  • মার্জ JOIN
  • লুপ জয়েন

এই তিনটি সংকেত সংকেতের সংজ্ঞা কী এবং কখন ব্যবহার করা উচিত?

উত্তর:


37

এমএসডিএন থেকে, অ্যাডভান্সড ক্যোয়ারী টিউনিং ধারণা সম্পর্কিত বিষয় :

এসকিউএল সার্ভার তিন ধরণের যোগদানের ক্রিয়াকলাপ নিয়োগ করে:

  • নেস্টেড লুপস যোগ দেয়

  • মার্জ যোগ দেয়

  • হ্যাশ যোগ দেয়

যদি একটি জোড় ইনপুট ছোট হয় (10 টির কম সারি) এবং অন্য জোড় ইনপুটটি মোটামুটি বড় এবং এর জোড় কলামগুলিতে সূচিযুক্ত হয় তবে একটি সূচক নেস্টেড লুপস জোনে দ্রুত যুক্ত হওয়া অপারেশন কারণ তাদের কমপক্ষে I / O এবং কয়েকটি সংখ্যক তুলনা প্রয়োজন। নেস্টেড লুপগুলি সম্পর্কে আরও তথ্যের জন্য, নেস্টেড লুপগুলি বোঝা বোঝা দেখুন।

যদি দুটি যোগদানের ইনপুটগুলি ছোট না হয় তবে তাদের যোগদানের কলামে বাছাই করা হয় (উদাহরণস্বরূপ, তারা সাজানো সূচী স্ক্যান করেই প্রাপ্ত হয়েছিল), একটি সংযুক্তি যোগটি দ্রুততম যোগদানের ক্রিয়াকলাপ। যদি উভয় যোগদানের ইনপুটগুলি বড় হয় এবং দুটি ইনপুট একই আকারের হয় তবে পূর্বের বাছাইয়ের সাথে একটি মার্জ জোড় এবং হ্যাশ জোড় অনুরূপ পারফরম্যান্স সরবরাহ করে। তবে দুটি ইনপুট মাপ একে অপরের থেকে উল্লেখযোগ্যভাবে পৃথক হলে হ্যাশ জয়েন অপারেশনগুলি প্রায়শই দ্রুত হয়। আরও তথ্যের জন্য, বোঝাটি মার্জকে যোগদান করে দেখুন।

হ্যাশ যোগ দেয় দক্ষতার সাথে বৃহত, আনসোর্টড, অ-সূচিযুক্ত ইনপুটগুলি কার্যকরভাবে প্রক্রিয়া করতে পারে।

তবে আমি বিশ্বাস করি যে আপনার আরও একটি বেসিক বিষয়টি শুরু করা উচিত: কোয়েরি টিউনিং এবং শেষ অবধি কোয়েরি ইঙ্গিতগুলি ব্যবহার করতে যান।


5
সম্মত হয়েছে, একটি যোগদানের ইঙ্গিতটি কেবলমাত্র একটি শেষ অবলম্বন হিসাবে ছেড়ে দেওয়া উচিত (কখনও কখনও দরকারী যদি আনুমানিক ডেটা প্রকৃত ডেটা থেকে উল্লেখযোগ্যভাবে পৃথক হয়)।
অ্যান্ড্রু বিকারটন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.