সূচকের সাথে যুক্তি যুক্তির ব্যবহার নয়


12

মাইক্রোসফ্টের ডেটাবেস বিকাশ পরীক্ষার বই অনুসারে 70-433: মাইক্রোসফ্ট এসকিউএল সার্ভার ২০০৮ ডাটাবেস ডেভলপমেন্ট :

কোনও শীর্ষস্থানীয় ওয়াইল্ডকার্ড অক্ষর যুক্তিযুক্ত নয় কোয়েরি অপ্টিমাইজারটিকে অনুসন্ধানটি অনুকূলিত করার জন্য সূচিগুলি ব্যবহার করতে দেয়। অনুকূল পারফরম্যান্সের জন্য, আপনাকে নোট কীওয়ার্ড এবং শীর্ষস্থানীয় ওয়াইল্ডকার্ড প্রতীক ব্যবহার করা এড়ানো উচিত ।

সুতরাং আমি তা হতে হবে NOT IN, NOT EXISTSইত্যাদি

এখন এই বিষয়ে তাই প্রশ্ন হলো, আমি যে @GBN দ্বারা নির্বাচিত সমাধান বিবৃতি দেওয়া উপরোক্ত লঙ্ঘন করবে।

স্পষ্টতই, এটি না।

সুতরাং আমার প্রশ্ন: কেন?

উত্তর:


21
  • NOT IN (SELECT ...)এবং NOT EXISTS (SELECT .. WHERE correlation..)"এন্টি সেমি যোগ দেয়"। এটি স্বীকৃত সেট ভিত্তিক অপারেশন

  • WHERE NOT (MyColumn = 1) এমন একটি ফিল্টার যা সমস্ত সারি দেখতে হবে

আরও তথ্যের জন্য, দেখুন:

সম্পাদনা করুন: সম্পূর্ণতার জন্য

বাম যোগদানকারীরা প্রায়শই আরও খারাপ কাজ করে। Http://explainextended.com/2009/09/15/not-in-vs-not-exists-vs-left-join-is-null-sql-server দেখুন

এই একই সাইটটি নোট করেছে যে মাইএসকিউএল-তে অন্য আরডিবিএমএসের মতো অস্তিত্ব নেই and

এসকিউএল সার্ভারে, আমি অভিজ্ঞতা থেকে জানি যে বাম জয়েন্টগুলি চলবে না পাশাপাশি উপস্থিত নেই। আপনার প্রায়শই একই ফলাফল পেতে অন্য DISTINCT প্রয়োজন যা অন্য প্রক্রিয়াজাতকরণ পদক্ষেপ।


0

আমি এর জন্য একটি উপ-নির্বাচন ব্যবহার করি:

SELECT m* from Main AS m 
    WHERE m.id NOT IN 
        (SELECT m2.id FROM Main AS m2 
           WHERE m2.id IN (...possibly null/empty list goes here...));

অবশ্যই যদি আপনার টেবিলটি বড় হয় তবে আপনি পারফরম্যান্সটি পরীক্ষা করতে এটি বিশ্লেষণ করতে চান। যদি আপনি অতিরিক্ত ক্লজগুলি পেয়েছেন তবে মূল ক্যোয়ারিতে ফলাফলগুলি ফিল্টার করছে, আপনাকে সেগুলি সাব-সিলেক্টে ডুপ্লিকেট করার প্রয়োজন হতে পারে। তবে নির্বিশেষে, সাব-সিলেক্টের একটি "IN" বনাম একটি "নট ইন" রয়েছে এবং এর ফলে বিভিন্ন আকারের ফলাফল থাকতে পারে এবং প্রায়শই ক্যোয়ারী পারফরম্যান্স সম্পর্কিত বিষয়গুলি থাকে, তাই বড় টেবিলের সাথে ব্যবহার করার সময় এই পদ্ধতির বিশ্লেষণ করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.