এসএআরজিএবিলিটি নিয়ে একটি প্রশ্ন


11

আমাকে কেবল নিশ্চিত করতে হবে যে আমি কিছুটা সঠিকভাবে বুঝতে পেরেছি:

আমি সম্প্রতি একটি এসও প্রশ্ন দেখেছি যেখানে কোনও ব্যবহারকারী লিনকের মতো উত্তর পোস্ট করেছেন:

from p in db.table where p.column.AddMinutes(1) > DateTime.Now select p

লিনকের সাথে অপরিচিতদের কাছে আমি এই বিবৃতিটির আউটপুট আশা করব (এটি ন্যায্যতার সাথে পরীক্ষা করা হয়নি):

SELECT *
FROM table t
WHERE DATEADD(min, 1, t.column) >= GETDATE() 

আমি এর জবাব পোস্ট করে বলেছিলাম যে ডেটটাইম ম্যানিপুলেশনটি চলকটিতে হওয়া উচিত (এক্ষেত্রে GETDATE()) তাই বাস্তবে বিবৃতিটি এমন কিছু প্রতিফলিত করে:

SELECT *
FROM table t
WHERE t.column >= DATEADD(min, -1, GETDATE())

আমার জবাবে, বিটগুলি সম্পর্কে আমি এখন অনিশ্চিত, নিম্নলিখিতটি ধরে নিন:

  1. কলামের কারসাজির কারণে সূচিগুলি ব্যবহার করা হবে না
  2. উপরের কারণে ক্যোয়ারী পরিকল্পনাগুলি আংশিকভাবে আলাদা হবে (পরীক্ষিত নয়, ধরে নেওয়া)
  3. উপরের কারণে, 1 ম কোয়েরি আসলে 2 য় এর চেয়ে খারাপ সঞ্চালন করবে।

আমার প্রশ্ন:

আমি কি আমার যুক্তিতে কিছু মিস করেছি? আমি কি সঠিক? সবশেষে, কোনও শরীরের SARGability সম্পর্কে কোনও ভাল নিবন্ধ আছে?

উত্তর:


6
  1. ঠিক
  2. অগত্যা নয় - এটি কোনও উপযুক্ত সূচক বিদ্যমান কিনা এবং সিবিও এটি ব্যবহারের সিদ্ধান্ত নেয় কিনা তার উপর নির্ভর করে। উদাহরণস্বরূপ, যদি টেবিলটি ছোট হয় বা পরিসংখ্যানগুলি অপ্টিমাইজারকে বিশ্বাস করে যে ফিল্টারটি ফলাফলের বৃহত শতাংশের জন্য সত্য হবে তবে এটি কোনও এফটিএসের ব্যয় কম বলে বিবেচনা করতে পারে
  3. এটি গ্যারান্টিযুক্ত নয় - এটিও সম্ভব যে ২ য় ক্যোয়ারী আরও খারাপ কাজ করবে - তবে আপনার যুক্তিটি মূলত শক্ত। উদাহরণস্বরূপ, একটি প্রান্তের ক্ষেত্রে যখন কোনও এফটিএস আসলে দ্রুততর হয়, তখন সিবিও তার ব্যয়ের সেরা অনুমানের ভিত্তিতে একটি সূচক স্ক্যান বেছে নিতে পারে - যা সর্বদা অবশ্যই একটি অনুমান

কিছুটা গুগল এই এসও প্রশ্নটি এবং এসএআরজিএবিলিটির বিষয়ে আকর্ষণীয় এই নিবন্ধটিকে সরিয়ে দিয়েছে


5

জ্যাকের অধিকার, তাই আমি এটির পুনরাবৃত্তি করব না।

আমি শুধু মত প্রকাশের একরকমের বিষয়ে কিছু প্রবন্ধ যুক্ত করব:

তারা প্রচুর এসকিউএল সার্ভারের অভিজ্ঞতা সহ দুর্দান্ত লেখক।

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