sql what ইন বনাম বা এসকিউএল যেখানে ক্লোজ




what is database management system (5)

বড় ডেটাবেসগুলির সাথে ডিল করার সময়, যা ভাল সঞ্চালন করে, ইনকাম বা এসকিউএল-তে Where ?

তারা মৃত্যুদন্ড কার্যকর করা হয়েছে কি কোন পার্থক্য আছে?


OR অর্থে (পঠনযোগ্য দৃষ্টিভঙ্গি থেকে), যখন কম মান তুলনা করা হয়। IN দরকারী esp হয়। যখন আপনার একটি গতিশীল উৎস থাকে, যার সাথে আপনি মানগুলি তুলনা করতে চান।

আরেকটি বিকল্প একটি অস্থায়ী টেবিল সঙ্গে একটি JOIN ব্যবহার করা হয়।
আমি যদি আপনার প্রয়োজনীয় সূচী আছে, তবে কর্মক্ষমতা একটি সমস্যা হতে পারে মনে হয় না।


খুঁজে বের করার সেরা উপায় এক্সিকিউশন পরিকল্পনা খুঁজছেন।

আমি ওরাকলের সাথে এটি চেষ্টা করেছি, এবং এটি ঠিক একই ছিল।

CREATE TABLE performance_test AS ( SELECT * FROM dba_objects );

SELECT * FROM performance_test
WHERE object_name IN ('DBMS_STANDARD', 'DBMS_REGISTRY', 'DBMS_LOB' );

যদিও প্রশ্নটি ব্যবহার করে, এক্সিকিউশন প্ল্যান বলছে যে এটি ব্যবহার করে OR :

--------------------------------------------------------------------------------------    
| Id  | Operation         | Name             | Rows  | Bytes | Cost (%CPU)| Time     |    
--------------------------------------------------------------------------------------    
|   0 | SELECT STATEMENT  |                  |     8 |  1416 |   163   (2)| 00:00:02 |    
|*  1 |  TABLE ACCESS FULL| PERFORMANCE_TEST |     8 |  1416 |   163   (2)| 00:00:02 |    
--------------------------------------------------------------------------------------    

Predicate Information (identified by operation id):                                       
---------------------------------------------------                                       

   1 - filter("OBJECT_NAME"='DBMS_LOB' OR "OBJECT_NAME"='DBMS_REGISTRY' OR                
              "OBJECT_NAME"='DBMS_STANDARD')                                              

আমার মনে হয় ওরাকলটি দক্ষতার সাথে কম কার্যকর এক (যা যা আছে) রূপান্তর করতে যথেষ্ট স্মার্ট। তাই আমি মনে করি উত্তরটি প্রতিটির পঠনযোগ্যতার উপর নির্ভরশীল হওয়া উচিত (যেখানে আমি মনে করি পরিষ্কারভাবে জিতেছে)


আমি একটি বড় সংখ্যা OR (350) এ একটি এসকিউএল কোয়েরি করেছি। Postgres এটা 437.80ms না

এখন ব্যবহার করুন:

23.18ms


OR অপারেটরের চেয়ে আরও জটিল মূল্যায়ন প্রক্রিয়া প্রয়োজন কারণ এটি অনেক শর্তকে অনুমোদন দেয়, কেবল IN এর মত সমান নয়।

এখানে আপনি OR এর সাথে কী ব্যবহার করতে পারেন তার একটি পছন্দ রয়েছে তবে এটি IN: এর সাথে সামঞ্জস্যপূর্ণ নয়। বৃহত্তর বা সমান, কম, কম বা সমান, লাইক এবং কিছু আরো REGEXP_LIKE মত। উপরন্তু শর্তাবলী সবসময় একই মান তুলনা করতে পারে না বিবেচনা করুন।

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

[সম্পাদনা] সম্ভবত একটি অপটিমাইজার মূল্যায়ন প্রক্রিয়ার মধ্যে অপ্টিমাইজেশান বাস্তবায়ন নাও করতে পারে, তবে এটি একসময় ঘটতে পারে না (এটি একটি ডাটাবেস সংস্করণ আপগ্রেড সহ) হতে পারে। তাই যদি আপনি OR অপারেটরটি ব্যবহার করেন যা অপ্টিমাইজ করা এক্সটেনশানটি আপনার ক্ষেত্রে ব্যবহার করা হবে না।





database