অ্যাডভেঞ্চার ওয়ার্কস ২০১২ ডাটাবেসে আমি এই ক্যোয়ারীটি চালাচ্ছি :
SELECT
s.SalesOrderID,
d.CarrierTrackingNumber,
d.ProductID,
d.OrderQty
FROM Sales.SalesOrderHeader s
JOIN Sales.SalesOrderDetail d
ON s.SalesOrderID = d.SalesOrderID
WHERE s.CustomerID = 11077
যদি আমি আনুমানিক বাস্তবায়ন পরিকল্পনার দিকে নজর রাখি তবে আমি নিম্নলিখিতটি দেখতে পাচ্ছি:
প্রাথমিক সূচী অনুসন্ধান (উপরের ডানদিকে) IX_SalesOrderHeader_CustomerID সূচকটি ব্যবহার করছে এবং আক্ষরিক ১১০77 on০ অনুসন্ধান করছে 2. এটির একটি অনুমান ২. r১৯২ সারি রয়েছে।
যদি আমি ব্যবহার করি তবে DBCC SHOW_STATISTICS ('Sales.SalesOrderHeader', 'IX_SalesOrderHeader_CustomerID') WITH HISTOGRAM
এটি দেখায় যে 11077 মান দুটি নমুনাযুক্ত কীগুলি 11019 এবং 11091 এর মধ্যে।
11019 এবং 11091 এর মধ্যে স্বতন্ত্র সারির গড় সংখ্যা 2.619718, বা ২.19১7272২ গোলাকার, যা সূচকের সন্ধানের জন্য দেখানো আনুমানিক সারিগুলির মান।
আমি যে অংশটি বুঝতে পারি না সেটি হ'ল সেলস অর্ডারডেটেল টেবিলের বিপরীতে ক্লাস্টারড ইনডেক্সের সারিগুলির আনুমানিক সংখ্যা।
আমি যদি চালাতে পারি DBCC SHOW_STATISTICS ('Sales.SalesOrderDetail', 'PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID')
:
সুতরাং বিক্রয়অর্ডারআইডিটির ঘনত্ব (যার সাথে আমি যোগ দিচ্ছি) হয় 3.178134E-05 05 তার মানে 1 / 3.178134E-05 (31465) বিক্রয় বিক্রয় অর্ডারডেটেল টেবিলের অনন্য বিক্রয় অর্ডারআইডির সংখ্যার সমান।
সেলস অর্ডারডেটেলে যদি 31465 টি স্বতন্ত্র বিক্রয় অর্ডারআইডি থাকে তবে তারপরে এমনকি বিতরণ করার সাথে সাথে সেলস অর্ডারডের প্রতি সারিগুলির গড় সংখ্যা 121313 (সারিগুলির মোট সংখ্যা) 31465 দ্বারা বিভক্ত হয় The গড় হয় 3.85561
সুতরাং যদি লুপটি নির্ধারণের জন্য আনুমানিক সংখ্যাটি 2.61972 হয়, এবং গড়টি 3.85561 এ ফিরে আসে তবে আমি মনে করব যে সারিগুলির আনুমানিক সংখ্যাটি 2.61972 * 3.85561 = 10.10062 হবে।
তবে সারিগুলির আনুমানিক সংখ্যা 11.4867।
আমি মনে করি দ্বিতীয় অনুমান সম্পর্কে আমার বোঝাটি ভুল এবং পৃথক সংখ্যাগুলি এটি সূচিত করে বলে মনে হচ্ছে। আমি কী মিস করছি?