আমি এমন পরিস্থিতির কথা ভাবছি যেখানে আমার উচ্চ ঘনত্ব সহ দুটি কলাম রয়েছে তবে এই কলামগুলি স্বতন্ত্র নয়।
সংজ্ঞা
এখানে পরীক্ষার উদ্দেশ্যে তৈরি করা সারণির সংজ্ঞাটি এখানে দেওয়া হয়েছে।
CREATE TABLE [dbo].[StatsTest](
[col1] [int] NOT NULL, --can take values 1 and 2 only
[col2] [int] NOT NULL, --can take integer values from 1 to 4 only
[col3] [int] NOT NULL, --integer. it has not relevance just to ensure that each row is different
[col4] AS ((10)*[col1]+[col2]) --a computed column ensuring that if two rows have different values in col1 or col2 have different values in col4
) ON [PRIMARY]
উপাত্ত
পরীক্ষার জন্য ডেটা নিম্নলিখিত is
col1 col2 col3 col4
1 1 1 11
1 2 2 12
1 2 3 12
1 3 4 13
1 3 5 13
1 3 6 13
1 4 7 14
1 4 8 14
1 4 9 14
1 4 10 14
2 1 11 21
2 1 12 21
2 1 13 21
2 1 14 21
2 2 15 22
2 2 16 22
2 2 17 22
2 3 18 23
2 3 19 23
2 4 20 24
পদক্ষেপ 1: কল 1 দ্বারা ফিল্টারিং
SELECT * FROM StatsTest WHERE col1=1
যেমনটি প্রত্যাশিত হিসাবে ক্যোয়ারী অপ্টিমাইজার সারিগুলির সঠিক সংখ্যা অনুমান করে।
পদক্ষেপ 2: কল 2 দ্বারা ফিল্টারিং
SELECT * FROM StatsTest WHERE col2=1
আবার আমাদের একটি নিখুঁত অনুমান আছে।
পদক্ষেপ 3: কল 1 এবং কল 2 দ্বারা ফিল্টারিং
SELECT * FROM StatsTest WHERE col1=1 AND col2=1
এখানে অনুমানটি সারিগুলির প্রকৃত সংখ্যার কাছাকাছি হওয়া থেকে দূরে।
সমস্যাটি হ'ল ক্যোয়ারী এনালাইজার ইম্পিলিটি ধরে নেয় যে কল 1 এবং কোল 2 স্বতন্ত্র তবে তারা তা নয় are
পদক্ষেপ 4: কল 4 দ্বারা ফিল্টারিং
SELECT * FROM StatsTest WHERE col4 = 11
আমি 3 য় ধাপ এ QUERY হিসাবে একই ফলাফল পেতে col4 = 11 দ্বারা ফিল্টার করতে পারে, কারণ col4 একটি কম্পিউটেড কলাম এবং পথ অনুযায়ী এটা সংজ্ঞায়িত করা হয়েছে col1 = 1 এবং col2 = 1 সমতূল্য col4 = 11 এখানে, কিন্তু হিসাবে প্রত্যাশা নিখুঁত।
উপসংহার / প্রশ্ন
Two দুই বা ততোধিক স্বাধীন কলাম দ্বারা ফিল্টারিংয়ের সাথে কাজ করার সময় কি এই কৃত্রিম এবং অদম্য সমাধানটি সঠিক অনুমানের একমাত্র উপলভ্য বিকল্প? Actual গণিত কলাম এবং গণিত কলাম দ্বারা ফিল্টার প্রকৃত নির্ভুলতা প্রাপ্ত করার জন্য কি গুরুতরভাবে প্রয়োজনীয়?
স্কেলফিল্ডে উদাহরণ