আমি জানি যখন সূচক বা টেবিল স্ক্যান ব্যবহার করার কথা আসে তখন এসকিউএল সার্ভার পরিসংখ্যান ব্যবহার করে কোনটি আরও ভাল তা দেখার জন্য।
আমার কাছে 20 মিলিয়ন সারি সহ একটি টেবিল রয়েছে। (স্ন্যাপশটকি, পরিমাপ) এবং এই কোয়েরিতে আমার একটি সূচক রয়েছে:
select Measure, SnapshotKey, MeasureBand
from t1
where Measure = 'FinanceFICOScore'
group by Measure, SnapshotKey, MeasureBand
ক্যোয়ারী 500k সারি দেয়। সুতরাং কোয়েরিটি টেবিলের সারিগুলির মাত্র 2.5% নির্বাচন করে।
প্রশ্নটি হ'ল এসকিউএল সার্ভার আমার থাকা ননক্লাস্টারড সূচকটি কেন ব্যবহার করে না এবং পরিবর্তে একটি টেবিল স্ক্যান ব্যবহার করে?
পরিসংখ্যান আপডেট করা হয়।
ক্যোরির পারফরম্যান্স যদিও ভাল তা উল্লেখ করা ভাল।
টেবিল স্ক্যান
জোরপূর্বক সূচক
সারণী / সূচক কাঠামো
CREATE TABLE [t1](
[SnapshotKey] [int] NOT NULL,
[SnapshotDt] [date] NOT NULL,
[Measure] [nvarchar](30) NOT NULL,
[MeasureBand] [nvarchar](30) NOT NULL,
-- and many more fields
) ON [PRIMARY]
টেবিলে কোনও পিকে নেই, কারণ এটি ডেটা গুদাম।
CREATE NONCLUSTERED INDEX [nci_SnapshotKeyMeasure] ON [t1]
(
[SnapshotKey] ASC,
[Measure] ASC
)