আশ্চর্যের বিষয় হল, আমার সঞ্চিত পদ্ধতিটি কিছু ইনপুট ডেটার জন্য এমএসজি 6 666 পেতে শুরু করেছে।
সজ্জিত পদ্ধতিটি শেষ ধাপে ব্যর্থ হয় যখন এটি নীচের কাঠামোর সাহায্যে একটি টেবিলের মধ্যে একটি সারি সন্নিবেশ করানোর চেষ্টা করে:
Columns:
A_Id: PK, int
B_Id: PK, FK, int
C_Id: PK, FK, int
D_Id: PK, smallint
এটি মূলত একটি টেবিল যা সমস্ত রেফারেন্সড সত্তাকে এক সাথে সংযুক্ত করে।
Indexes:
IX_TableName_D_id - Clustered index on D_id column
PK_TableName - Unique non-clustered index on all columns (A_Id, B_Id, C_Id, D_Id)
উভয় সূচকের জন্য খণ্ডন কম (<25%)। তবে টেবিলটিতে অপারেশন করার পরিমাণটি তীব্র হওয়ায় পিকে_টেবলনেম টুকরোগুলি দ্রুত বৃদ্ধি পায়।
টেবিলের আকার:
Row count: ~80,000,000 rows
সুতরাং, যখন আমি কোনও ভীরি সহজ জিজ্ঞাসা চালানোর চেষ্টা করি তখন ডি_আইডি-র কিছুগুলির জন্য আমি নিম্নলিখিত বার্তাটি পাই:
এমএসজি 6 666. পার্টিশনের আইডি 422223771074560 সহ সূচকের জন্য সদৃশ দলের জন্য সুনির্দিষ্ট সিস্টেম-উত্পন্ন অনন্য মানকে ছাড়িয়ে গেছে the অন্যথায়, অন্য একটি ক্লাস্টারিং কী ব্যবহার করুন।
প্রশ্নের উদাহরণ:
INSERT INTO TableName
(A_Id,B_Id,C_Id,D_id)
VALUES (1,1,1,14)
উদাহরণস্বরূপ, যখন আমি কিছু মানগুলিতে ডি_আইডি সেট করি - এটি ব্যর্থ হয়, উদাহরণস্বরূপ '14'। যদি আমি ডি_আইডি অন্যান্য মানগুলিতে (1,2,3, ... 13, 15,16, ...) সেট করে রাখি, তবে ক্যোয়ারীটি ঠিক আছে।
আমার সন্দেহ হয় সূচকের সাথে সত্যিই খারাপ কিছু হচ্ছে ... তবে আমি এর নীচে পৌঁছতে পারি না ... :( কেন এটি ব্যর্থ হয়?
TRUNCATE TABLE
ইউনিকফায়ারটিকে পুনরায় সেট করেন তবে পরীক্ষা করতে পারেন ?