এসকিউএল WHERE ক্লজ শর্ট সার্কিট মূল্যায়ন করা হয়?


142

এসকিউএল WHEE ক্লোজের বুলিয়ান এক্সপ্রেশনগুলি শর্ট সার্কিটের মূল্যায়ন করা হয় ?

উদাহরণ স্বরূপ:

SELECT * 
FROM Table t 
WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key) 

যদি @ কী সত্যই মূল্যায়ণ করে তবে @ কী নাল এবং @ কি = টি নয় ? কী মূল্যায়ন করা হয়?

যদি না হয় তবে কেন?

যদি হ্যাঁ, তা কি নিশ্চিত? এটি এএনএসআই এসকিউএল এর অংশ বা এটি ডাটাবেস নির্দিষ্ট?

ডাটাবেস নির্দিষ্ট, স্কেল সার্ভার? ওরাকল? মাইএসকিউএল?


@ কি ধারাটি কি নালার জাল নয়? @ কি এলএইচএসের নীল ধারাটি এইটির যত্ন নেয়?
ব্যয়কারী

10
@ স্প্লেন্ডার - প্রশ্নের উত্তরের উপর নির্ভর করে
গ্রেগ ডিন

@ গ্রেগ: আমি ব্যয়কারীদের সাথে একমত শর্ট সার্কিটের অভাব বা উপস্থিতি আমি কোনও পার্থক্য দেখছি না। যদি @ কী নুল হয়, তবে @ ককি = টি। কী সর্বদা মিথ্যা ফিরিয়ে দেবে, নুল হিসাবে! = নুল (এ কারণেই আমরা IS নাল ব্যবহার করি)।
মাইকেল ম্যাডসেন

14
@ মিশেল এবং @ স্পেন্ডার - প্রশ্নের মূল বক্তব্যটি হ'ল, দ্বিতীয় শর্তটি মূল্যায়ন করে কি না। প্রশ্নের বিন্দুটি নয়, এই নির্দিষ্ট এসকিউএল বিবৃতিটি যতটা সম্ভব কম অক্ষরে লেখা আছে। আরও জটিল উদাহরণে এটি নিঃসন্দেহে গুরুত্বপূর্ণ হবে, যেখানে ক্লজ শর্ট সার্কিট, আপনি এমন অভিব্যক্তি লিখতে পারেন যা অন্যথায় ভুল হবে।
গ্রেগ ডিন

2
শর্ট সার্কিট বলতে বাম থেকে ডানে শর্তগুলির মূল্যায়ন বোঝায়। শর্ত দেওয়া যেমন WHERE a = 1 AND b = 2ডাটাবেস ইঞ্জিনের পক্ষে সমস্ত সারি যেখানে b = 2 পাওয়া যায় তার জন্য কার্যকর হতে পারে, তারপরে যেখানে a = 1 ফিল্টার করুন আপনি যদি গ্যারান্টি চেয়ে থাকেন তবে অপ্টিমাইজারটি অকেজো হয়ে যায়।
সালমান এ

উত্তর:


72

এএনএসআই এসকিউএল খসড়া 2003 5WD-01-ফ্রেমওয়ার্ক-2003-09.pdf

.3.৩.৩.৩ বিধি মূল্যায়ন আদেশ

[...]

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


4
বাস্তবায়ন নির্ভর? গ্রেট। জেনে রাখাও ভাল। কমপক্ষে CASEশর্ট সার্কিট হয়।
ডাকব

3
এর অর্থ এই নয় যে অভিব্যক্তি মূল্যায়নগুলি সংজ্ঞায়িত? "(0 = 0 বা নাল)", সমস্ত শর্তাদি মূল্যায়ন করা থাকলে সর্বদা শূন্য থাকে তবে বাম থেকে ডান এবং সংক্ষিপ্ত সার্কিট যদি মূল্যায়ন করা হয় তবে সর্বদা সত্য।
ব্যবহারকারী 48956

6
এসকিউএল একটি ঘোষণামূলক ভাষা, এটি মূলত এর নিয়ন্ত্রণ প্রবাহকে বর্ণনা না করেই গণনার যৌক্তিকতা প্রকাশ করে; কোন ধরণের শর্ট সার্কিট মূল্যায়নের অপরিহার্য শৈলীর বিপরীতে এবং এর পরিণতিগুলি।
জর্জি গার্সিয়া

আমি @ জর্জেগার্সিয়া সম্পর্কে সেভাবে ভাবিনি। আমার ধারণা শর্ট সার্কিট মূল্যায়ন কার্যকরভাবে কোনও আদেশকে জোর করে force আমি এমন কিছু কোড নিয়ে কুস্তি করছি যেখানে এটি সম্ভবত একটি সূক্ষ্ম সমস্যার মূলে রয়েছে। অন্তর্দৃষ্টি জন্য ধন্যবাদ।
কার্নট আন্তোনিও রোমেরো

58

উপরের দিক থেকে, শর্ট সার্কিটটি সত্যই উপলভ্য নয়।

আপনার যদি এটির প্রয়োজন হয় তবে আমি কেস স্টেটমেন্টের পরামর্শ দিই:

Where Case when Expr1 then Expr2 else Expr3 end = desiredResult

Expr1সর্বদা মূল্যায়ন করা হয় তবে কেবলমাত্র একটিতে Expr2এবং Expr3প্রতি সারিতে মূল্যায়ন করা হবে।


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

1
কেস এক্সপ্রেশন , বিবৃতি নয়।
জার্লহ

19

আমি মনে করি এটি এমন একটি ক্ষেত্রে যেখানে আমি এটি লেখি যেমন এটি শর্ট সার্কিট নয়, তিন কারণে।

  1. কারণ এমএসএসকিউএল-র জন্য, এটি স্পষ্ট জায়গায় বিওএল দেখে সমাধান করা যায় নি, সুতরাং আমার জন্য এটি এটিকে সাধারণভাবে অস্পষ্ট করে তোলে।

  2. কারণ কমপক্ষে তবে আমি জানি আমার কোডটি কাজ করবে। এবং আরও বড় কথা, আমার পরে যারা আসবেন তারাও তাই, তাই বার বার একই প্রশ্নে উদ্বিগ্ন হওয়ার জন্য আমি তাদের স্থাপন করছি না।

  3. আমি বেশ কয়েকটি ডিবিএমএস পণ্যগুলির জন্য প্রায়শই যথেষ্ট লিখি এবং আমি যদি সহজেই তাদের চারপাশে কাজ করতে পারি তবে পার্থক্যগুলি মনে রাখতে চাই না।


4
দুর্দান্ত পরামর্শ। এটি প্রশ্নের উত্তর দেয় না, তবে এটি একটি দুর্দান্ত ব্যবহারিক দৃষ্টিভঙ্গি। সুতরাং +1
গ্রেগ ডিন

12

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

কিছুক্ষণ আগে আমি নিজেই একই প্রশ্নে দৌড়েছি এবং আমার গবেষণা সত্যিই আমাকে একটি নির্দিষ্ট উত্তর দেয়নি। আপনি প্রমাণের বোধ তৈরি করতে একটি ছোট্ট ক্যোয়ারী লিখতে পারেন যা এটি কাজ করে তবে আপনি কী নিশ্চিত যে আপনার ডাটাবেসে বোঝা বাড়ার সাথে সাথে টেবিলগুলি আরও বড় হতে থাকবে এবং ডাটাবেসে জিনিসগুলি অনুকূলিত হয়েছে এবং পরিবর্তিত হবে, উপসংহারটি হবে রাখা. আমি তাই করতে পারিনি এবং সতর্কতার দিক থেকে ভ্রান্ত হয়েছি এবং শর্ট সার্কিট নিশ্চিত করতে WHEE ধারাটিতে CASE ব্যবহার করেছি।


7

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


6
মৃত্যুদন্ড কার্যকর করার গতির জন্য এটি গুরুত্বপূর্ণ!
ব্যবহারকারী4951

কেবল কারণ এটি বর্তমানে এটি কাজ করে তার অর্থ এটি পরিবর্তন করা যায় না। আমাদের বাস্তবায়ন থেকে মডেল / শব্দার্থবিজ্ঞান আলাদা করতে হবে। কার্য সম্পাদনের পরিকল্পনাগুলি কোয়েরিগুলির বাস্তবায়ন অনুকূলকরণের জন্য অভ্যন্তরীণভাবে প্রয়োগ করা হয় ... এবং শর্ট সার্কিট শব্দার্থবিজ্ঞানগুলি এসকিউএল এর ঘোষণামূলক প্রকৃতির সাথে কেবল বিরোধিতা করে না তবে এই জাতীয় অপ্টিমাইজেশনকে বাধা দিতে পারে। যাইহোক, শর্ট সার্কিট মূল্যায়ন শব্দার্থ যদি ডিবিএমএস দ্বারা সমর্থন করা হয় তবে এ জাতীয় শব্দার্থবিজ্ঞানের সমর্থনে কার্যকরকরণ পরিকল্পনা বাস্তবায়ন পরিবর্তিত হবে।
জর্জি গার্সিয়া

3

আমি সাধারণত এটি optionচ্ছিক পরামিতিগুলির জন্য ব্যবহার করি। এটি কি শর্ট সার্কিট হিসাবে একই?

SELECT  [blah]
FROM    Emp
WHERE  ((@EmpID = -1) OR (@EmpID = EmpID))

এটি আমাকে 1-এ পাস করার বিকল্প দেয় বা কোনও বৈশিষ্ট্যের alচ্ছিক চেকিংয়ের জন্য যা কিছু অ্যাকাউন্টে দেয় gives কখনও কখনও এটি একাধিক টেবিলের সাথে যুক্ত হতে, বা সম্ভবত একটি ভিউ জড়িত।

খুব সহজ, এটি ডিবি ইঞ্জিনকে যে অতিরিক্ত কাজ দেয় তা পুরোপুরি নিশ্চিত নয়।


2

এসকিউএল সার্ভারের জন্য, আমি মনে করি এটি সংস্করণটির উপর নির্ভর করে তবে এসকিউএল সার্ভার 2000 এর সাথে আমার অভিজ্ঞতাটি হ'ল @key = t.Key মূল্যায়ন করলেও @ কী শূন্য থাকে। অন্য কথায়, WHERE ধারাটির মূল্যায়ন করার সময় এটি দক্ষ শর্ট সার্কিট করতে পারে না।

আমি লোকেদের যেমন একটি নমনীয় ক্যোয়ারি করার পদ্ধতি হিসাবে আপনার উদাহরণের মতো কাঠামোর সুপারিশ করতে দেখেছি যেখানে ব্যবহারকারী বিভিন্ন মানদণ্ডে প্রবেশ করতে বা প্রবেশ করতে পারে না। আমার পর্যবেক্ষণটি হ'ল @ কী বাতিল হয়ে গেলে কী এখনও ক্যোয়ারী পরিকল্পনায় জড়িত এবং যদি কী সূচিযুক্ত হয় তবে তা সূচকটি দক্ষতার সাথে ব্যবহার করে না।

বিভিন্ন ধরণের মানদণ্ডের সাথে এই ধরণের নমনীয় ক্যোয়ারী সম্ভবত এমন একটি ক্ষেত্রে যেখানে গতিশীলভাবে তৈরি এসকিউএল সত্যিই সবচেয়ে ভাল উপায়। যদি @ কী নাল হয় তবে আপনি এটিকে কোয়েরিতে মোটেই অন্তর্ভুক্ত করবেন না।


2

এই প্রশ্নটি দেখে কেবল হোঁচট খেয়েছে এবং ইতিমধ্যে এই ব্লগ-এন্ট্রিটি খুঁজে পেয়েছে: http://rusanu.com/2009/09/13/on-sql-server-boolean-operator-short-circuit/

এসকিউএল সার্ভারটি যেখানেই ফিট তার কোয়েরিটি অনুকূলিত করতে বিনামূল্যে, সুতরাং ব্লগ পোস্টে দেওয়া উদাহরণে, আপনি শর্ট সার্কিটের উপর নির্ভর করতে পারবেন না।

যাইহোক, কোনও CASE লিখিত আদেশে মূল্যায়নের জন্য স্পষ্টতই নথিযুক্ত - সেই ব্লগ পোস্টের মন্তব্যগুলি দেখুন check


1

শর্ট সার্কিট মূল্যায়নের প্রধান বৈশিষ্ট্যটি হ'ল ফলাফল নির্ধারণের সাথে সাথেই এটি প্রকাশের মূল্যায়ন বন্ধ করে দেয়। এর অর্থ এই যে বাকী বাক্যতা উপেক্ষা করা যায় কারণ ফলাফল নির্ধারণ করা হয় বা না হয় তার ফলাফল একই হবে।

বাইনারি বুলিয়ান অপারেটরগুলি অর্থগঠিত, অর্থ:

a AND b == b AND a
a OR  b == b OR  a
a XOR b == b XOR a

সুতরাং মূল্যায়নের আদেশের কোনও গ্যারান্টি নেই। মূল্যায়নের আদেশ কোয়েরি অপ্টিমাইজার দ্বারা নির্ধারিত হবে।

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

if(someString == null | someString.Length == 0 )
  printf("no text in someString");

এই সি # উদাহরণটি ব্যতিক্রম ঘটায় someString == nullকারণ এটি সম্পূর্ণরূপে মূল্যায়ন করা হবে। শর্ট সার্কিট মূল্যায়নে এটি প্রতিটি সময় কাজ করবে।

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

এর অর্থ এসকিউএল-তে আপনি এমন প্রকাশটি লিখতে পারবেন না যা শর্ট সার্কিট বা সম্পূর্ণ মূল্যায়ন ব্যবহারের উপর নির্ভর করে আলাদাভাবে মূল্যায়ন করা হয়।

যদি এসকিউএল বাস্তবায়ন শর্ট সার্কিট মূল্যায়ন ব্যবহার করে তবে এটি কেবল আশাবাদী ক্যোয়ারির কার্যকারিতা দ্রুততর করতে পারে।


1
হ্যাঁ, বুলিয়ান অপারেটরগুলি পরিবর্তনশীল। আমি মনে করি না বস্তুর (বা না) এর সাথে কিছু করার আছে anything
গ্রেগ ডিন 15

1

আমি শর্ট সার্কিটিং সম্পর্কে জানি না, তবে আমি এটি অন্যথায় বিবৃতি হিসাবে লিখব

if (@key is null)
begin

     SELECT * 
     FROM Table t 

end
else
begin

     SELECT * 
     FROM Table t 
     WHERE t.Key=@key

end

এছাড়াও, ভেরিয়েবলগুলি সর্বদা সমীকরণের ডানদিকে থাকা উচিত। এটি এটিকে ব্যস্ত করে তোলে।

http://en.wikipedia.org/wiki/Sargable


1
ডান দিকের ভেরিয়েবলগুলি সম্পর্কে যে কেউ এটি সমর্থন করতে পারে? কিছু কারণে এটি বিশ্বাস করতে আমার খুব কষ্ট হয়।
গ্রেগ ডিন

Searchoracle.techtarget.com/expert/KnowledgebaseAnswer/… এখনই আর খুব বেশি কিছু খুঁজে পাচ্ছে না
ডিফরাক 42

আমি যেমন নিবন্ধ বুঝতে। এটি কলামের নামগুলি সরগযোগ্য না করার বিষয়ে ফাংশন সম্পর্কে কথা বলছে। যা আমি বুঝি। তবে আমি (এ = @ এ) বা (@ এ = এ) বিবেচনা করি না।
গ্রেগ ডিন

আমার ভুলও হতে পারে. এটি ইতিমধ্যে বিদ্যমান না থাকলে একটি ভাল প্রশ্ন হতে পারে।
ডিফোক 42

1

এসকিউএল সার্ভার ২০০৮ আর 2-তে একটি দ্রুত এবং নোংরা পরীক্ষার নীচে:

SELECT *
FROM table
WHERE 1=0
AND (function call to complex operation)

এটি কোনও রেকর্ড ছাড়াই অবিলম্বে ফিরে আসে। শর্ট সার্কিট আচরণের ধরনের উপস্থিত ছিলেন।

তারপরে এটি চেষ্টা করে দেখুন:

SELECT *
FROM table
WHERE (a field from table) < 0
AND (function call to complex operation)

কোনও রেকর্ড না জানা এই শর্তটি পূরণ করবে:

(a field from table) < 0

এটি বেশ কয়েক সেকেন্ড সময় নিয়েছে, শর্ট সার্কিটের আচরণে আর কোনও উপস্থিতি নেই এবং প্রতিটি রেকর্ডের জন্য জটিল অপারেশনটি মূল্যায়ন করা হচ্ছিল।

আশা করি এটি ছেলেদের সহায়তা করবে।


1
আমার অনুমান যে পরিকল্পনার বাস্তবায়ন শুরু হওয়ার আগে প্রথম প্রশ্নটি সংকলন সময়ে "শর্ট সার্কিট" হয়েছিল।
লুই

1

এখানে প্রমাণ করার জন্য একটি ডেমো রয়েছে যে মাইএসকিউএল যেখানে শর্ট সার্কিটের ক্লজটি সম্পাদন করে :

http://rextester.com/GVE4880

এটি নিম্নলিখিত প্রশ্নের পরিচালনা করে:

SELECT myint FROM mytable WHERE myint >= 3 OR myslowfunction('query #1', myint) = 1;
SELECT myint FROM mytable WHERE myslowfunction('query #2', myint) = 1 OR myint >= 3;

এর মধ্যে কেবলমাত্র পার্থক্য হ'ল ওআর শর্তে অপারেশনগুলির ক্রম।

myslowfunctionইচ্ছাকৃতভাবে একটি সেকেন্ডের জন্য ঘুমায় এবং প্রতিবার চালানোর সময় লগ টেবিলটিতে একটি এন্ট্রি যুক্ত করার পার্শ্ব প্রতিক্রিয়া রয়েছে। উপরোক্ত দুটি ক্যোয়ারি চালানোর সময় লগ ইন করার ফলাফল এখানে রয়েছে:

myslowfunction called for query #1 with value 1
myslowfunction called for query #1 with value 2
myslowfunction called for query #2 with value 1
myslowfunction called for query #2 with value 2
myslowfunction called for query #2 with value 3
myslowfunction called for query #2 with value 4

উপরের চিত্রটি দেখায় যে যখন অন্য অপারেন্ডটি সর্বদা সত্য হয় না (শর্ট সার্কিটের কারণে) যখন কোনও শর্তের বাম দিকে উপস্থিত হয় তখন একটি ধীর ফাংশন বেশিবার সম্পাদিত হয়।


4
হুম আপনি সম্ভবত যা বোঝাতে চেয়েছিলেন " এই নির্দিষ্ট উদাহরণে মাইএসকিউএল যেখানে শর্ট সার্কিটিং ক্লোজ করে তা প্রমাণ করার জন্য এখানে একটি ডেমো রয়েছে :"
টিটি।

1
অবশ্যই - এটি ঘটতে পারে এমন একটি প্রমাণ।
স্টিভ চেম্বারস

0

এটি ক্যোয়ারী বিশ্লেষকটিতে অতিরিক্ত 4 সেকেন্ড সময় নেয়, তাই আমি যা দেখতে পাচ্ছি তা থেকে এমনকি যদি ছোট করা হয় না ...

SET @ADate = NULL

IF (@ADate IS NOT NULL)
BEGIN
    INSERT INTO #ABla VALUES (1)
        (SELECT bla from a huge view)
END

একটি গ্যারান্টিযুক্ত উপায় রাখা ভাল হবে!


-2

এটি অবশ্যই স্পষ্ট যে এমএস এসকিউএল সার্ভার শর্ট সার্কিট তত্ত্বকে সমর্থন করে, অপ্রয়োজনীয় চেকিং এড়িয়ে কর্মক্ষমতা উন্নত করতে,

সহায়ক উদাহরণ:

SELECT 'TEST'
WHERE 1 = 'A'

SELECT 'TEST'
WHERE 1 = 1 OR 1 = 'A'

এখানে, প্রথম উদাহরণটি ত্রুটির ফলস্বরূপ পরিণত হবে 'বর্ণের মান' এ 'ডেটা টাইপ ইনটে রূপান্তর করার সময় রূপান্তর ব্যর্থ হয়েছিল' '

যদিও দ্বিতীয়টি সহজে 1- 1 শর্তটি সত্য হিসাবে মূল্যায়ন করা হিসাবে সহজেই চলে এবং এইভাবে দ্বিতীয় শর্তটি মোটেও চলতে পারে না।

আরও

SELECT 'TEST'
WHERE 1 = 0 OR 1 = 'A'

এখানে প্রথম শর্তটি মিথ্যা হিসাবে মূল্যায়ন করবে এবং তাই ডিবিএমএস দ্বিতীয় শর্তে যাবে এবং আপনি আবার উপরের উদাহরণ হিসাবে রূপান্তর ত্রুটি পাবেন।

দ্রষ্টব্য: আমি আরোনোনিয়াস শর্তটি WEATHER সত্যায়িত করার পক্ষে জেনেছি শর্তটি কার্যকর করা হয়েছে, শর্তটি কার্যকর করা হয়েছে, শর্ট-সার্কিট করা অন্যরকম শর্তে যদি ফলাফল প্রকাশিত হয় বা সংক্ষিপ্ততর হয় QUERY

সাধারণ ব্যাখ্যার

বিবেচনা,

WHERE 1 = 1 OR 2 = 2

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

"OR" এর ক্ষেত্রে যদি প্রথম শর্তটিকে "OR" দ্বারা সংযুক্ত পুরো চেইনকে সত্য করে মূল্যায়ন করা হয় অন্যকে মূল্যায়ন না করে সত্য হিসাবে মূল্যায়ন হিসাবে বিবেচনা করা হবে।

condition1 OR condition2 OR ..... OR conditionN

কন্ডিশন 1 টি যদি সত্য হিসাবে মূল্যায়ন করা হয় তবে কন্ডিশনএন না হওয়া পর্যন্ত সমস্ত শর্ত বাকি রাখুন। প্রথম সত্যের নির্ধারণের সাধারণীকরণের কথায় , ওআর দ্বারা লিঙ্কযুক্ত অন্যান্য সমস্ত শর্ত বাদ দেওয়া হবে।

দ্বিতীয় শর্তটি বিবেচনা করুন

WHERE 1 = 0 AND 1 = 1

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

"এবং" এর ক্ষেত্রে যদি প্রথম শর্তটি মিথ্যাতে মূল্যায়ন করা হয় তবে "ও" এর সাথে যুক্ত পুরো চেইন অন্যকে মূল্যায়ন না করেই ফলসকে মূল্যায়ন হিসাবে বিবেচিত হবে।

condition1 AND condition2 AND ..... conditionN

যদি CONDITION1 করতে মূল্যায়ন করা হয় মিথ্যা , পর্যন্ত অবস্থার বাকি সব conditionN এড়ানো হয়েছে হবে। প্রথম মিথ্যা সংকল্পের সাধারণীকরণের কথায় , এবং এর সাথে যুক্ত অন্যান্য সমস্ত শর্ত বাদ দেওয়া হবে।

ত্রৈমূর্তি, একটি উইন্ডোজ প্রোগ্রামার সবসময়ই শর্তের শৃঙ্খলা প্রোগ্রামের মধ্যে হওয়া উচিত, যেটি খুব কম বা খুব বেশি এলিমিনেটিং শর্তে মূল্য নির্ধারিত হয় প্রথমটি, বা এই শর্তটি সীমাবদ্ধভাবে সীমাবদ্ধকরণের ব্যবস্থা করে


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