এমএসডিএন থেকে :
" কী কলামগুলিকে
আরোহণ বা উতরাইয়ের উপরে সংঘটিত অপারেশনগুলি সংঘটিত হয় বা মূল কলামগুলির উত্থানের উপরে পরিসংখ্যান যেমন আইডেন্টিটি বা রিয়েল-টাইম টাইমস্ট্যাম্প কলামগুলির জন্য ক্যোয়ারী অপটিমাইজার পারফরম্যান্সের তুলনায় আরও ঘন ঘন পরিসংখ্যান আপডেটের প্রয়োজন হতে পারে sert পরিসংখ্যান আপডেটের সূত্রপাতের জন্য যুক্ত হওয়া সারিগুলির সংখ্যা খুব কম হতে পারে statistics ভুল কার্ডিনালিটির অনুমান এবং ধীরে ক্যোরিয় পারফরম্যান্সের ফলাফল।
উদাহরণস্বরূপ, সর্বাধিক সাম্প্রতিক বিক্রয় আদেশের তারিখগুলি থেকে নির্বাচন করা একটি ক্যোয়ারিতে সঠিকতম মূল্যমানের অনুমান থাকবে যদি সর্বাধিক সাম্প্রতিক বিক্রয় আদেশের তারিখের জন্য কার্ডিনালটির অনুমান অন্তর্ভুক্ত করার জন্য পরিসংখ্যানগুলি আপডেট না করা হয়।
রক্ষণাবেক্ষণ অপারেশনগুলির
পরে ডেটা বন্টনকে পরিবর্তন করে এমন কোনও রক্ষণাবেক্ষণ পদ্ধতি সম্পাদনের পরে পরিসংখ্যান আপডেট করার বিষয়ে বিবেচনা করুন, যেমন কোনও টেবিল কাটা বা সারিগুলির একটি বিশাল শতাংশের একটি বাল্ক সন্নিবেশ সম্পাদন করা। প্রশ্নগুলি স্বয়ংক্রিয় পরিসংখ্যান আপডেটের জন্য অপেক্ষা করার সময় এটি ক্যোয়ারী প্রক্রিয়াকরণে ভবিষ্যতে বিলম্ব এড়াতে পারে। "
আপনি আপনার সিস্টেমে সময়ে সময়ে "এক্সইসি স্প_আপডেস্টেটস" ব্যবহার করতে পারেন (কিছু সময় নির্ধারিত) বা সমস্ত বস্তুর উপর STATS_DATE ফাংশনটি ব্যবহার করতে পারেন এবং দেখবেন যে তাদের পরিসংখ্যান আসলে শেষবারে কখন আপডেট হয়েছিল এবং তারপরে যদি খুব বেশি সময় থাকে তবে আপডেজ ব্যবহার করুন নির্দিষ্ট বিষয়টির জন্য পরিসংখ্যান। আমার অভিজ্ঞতায় এমনকি স্বয়ংক্রিয় পরিসংখ্যান সক্ষম করার পরেও আমরা এখনও সময়ে সময়ে পরিসংখ্যান আপডেট করতে বাধ্য হয়েছি, sertোকানো অপারেশনের কারণে যা স্বয়ংক্রিয় আপডেট ট্রিগার করে না।
আমার ব্যক্তিগত কোড যুক্ত করতে (একটি সাপ্তাহিক চাকরিতে ব্যবহৃত যা স্ট্যাটাস আপডেটের জন্য গতিশীল বিবৃতি তৈরি করে):
select distinct
'update statistics [' + stats.SchemaName + '].[' + stats.TableName + ']'
+ case when stats.RowCnt > 50000 then ' with sample 30 percent;'
else
';' end
as UpdateStatement
from (
select
ss.name SchemaName,
so.name TableName,
so.id ObjectId,
st.name AS StatsName,
STATS_DATE(st.object_id, st.stats_id) AS LastStatisticsUpdateDate
, si.RowModCtr
, (select case si2.RowCnt when 0 then 1 else si2.RowCnt end from sysindexes si2 where si2.id = si.id and si2.indid in (0,1)) RowCnt
from sys.stats st
join sysindexes si on st.object_id = si.id and st.stats_id = si.indid
join sysobjects so on so.id = si.id and so.xtype = 'U' --user table
join sys.schemas ss on ss.schema_id = so.uid
) stats
where cast(stats.RowModCtr as float)/cast(stats.RowCnt as FLOAT)*100 >= 10 --more than 10% of the rows have changed
or ( --update statistics that were not updated for more than 3 months (and rows no > 0)
datediff(month, stats.LastStatisticsUpdateDate, getdate()) >= 3
and stats.RowCnt > 0
)
এখানে আমি এমন সমস্ত বস্তু পেয়েছি যেখানে 3 মাসের বেশি স্ট্যাটাস আপডেট করা হয়নি বা শেষ পরিসংখ্যান আপডেট হওয়ার পরে এটির 10% এরও বেশি সারি পরিবর্তিত হয়েছে।
where col=(cast @var...)
) এবং@var
হতে পারে'%'
। আমি মাত্র এক বা দুই সপ্তাহ আগে এটি উত্তরাধিকার সূত্রে পেয়েছি এবং এটিকে প্রতিস্থাপন না করা পর্যন্ত এটি মূলত কাজ করা দরকার। লিঙ্কটির জন্য ধন্যবাদ, আমি এটিকে ঘূর্ণি দেব।