আমরা একটি বড় টেবিল আছে [MyTable]
যা বর্তমানে উভয় একটি আছে Primary Key
, এবং একটি Unique Non Clustered Index
একই কলামে ( [KeyColumn]
)। ইউ এনসি সূচীতে অতিরিক্ত কভারিং কলামও রয়েছে।
একই কলামগুলিতে পিকে এবং ইউনিক এনসি সূচক উভয়কেই অপ্রয়োজনীয় বলে মনে হচ্ছে, তাই আমি প্রাইমারি কী মুছে ফেলার এবং তার পরিবর্তে রেফারেন্সিয়াল ইন্টিগ্রিটির উদ্দেশ্যে ইউনিক নন ক্লাস্টারড ইনডেক্স ব্যবহার করার কথা ভাবছিলাম।
নোট করুন যে টেবিলটি সম্পূর্ণরূপে অন্য কলাম দ্বারা গুচ্ছ।
যেমন আমাদের আছে:
ALTER TABLE [MyTable]
ADD CONSTRAINT [PK_MyTable]
PRIMARY KEY NONCLUSTERED ([KeyColumn])
GO
এবং
CREATE UNIQUE NONCLUSTERED INDEX [IX_MyTable_SomeIndex]
ON [MyTable] ([KeyColumn])
INCLUDE ([Column1], [Column2])
GO
আমি যতদূর জানি, একটি প্রাথমিক কীতে কভারিং কলামগুলি যুক্ত করা সম্ভব নয়, তাই আমি করার ইচ্ছা করি:
- নির্ভরশীল বিদেশী কী বাধাগুলি ফেলে দিন
MyTable.KeyColumn
MyTable.KeyColumn
সম্পূর্ণরূপে প্রাথমিক কীটি ফেলে দিন- সারণীতে বিদেশী কীগুলি পুনরায় যুক্ত করুন (যেমন আরআই এর মাধ্যমে কার্যকর করা হবে
MyTable.KeyColumn
)
এটি করার জন্য আমি কেবল ভাবতে পারি যে আমরা আমাদের ERD ডায়াগ্রামগুলিতে ভিজ্যুয়াল কী প্রতীকটি পাব না এবং অন্তর্ভুক্ত কলামগুলির কারণে (পাতাগুলি) সূচকের ঘনত্ব কম হবে।
আমি /programming/487314/primary-key-or-unique-index পড়েছি এবং এটি করার সততা এবং কার্য সম্পাদনের দিকগুলি নিয়ে খুশি।
আমার প্রশ্নটি: এই পদ্ধতির ত্রুটি কি?
আমি যেটি সম্পাদন করার চেষ্টা করছি তা সম্পাদনা করুন : পারফরম্যান্স অপটিমাইজেশন এবং স্প্রিং ক্লিনিং । পিকে বা একটি সূচক মুছে ফেলার মাধ্যমে, আমার সূচকগুলি = দ্রুত লেখার জন্য কম পৃষ্ঠাগুলির প্রয়োজন হবে, পাশাপাশি রক্ষণাবেক্ষণ / অপারেশনাল বেনিফিট, অর্থাত্ ডিগ্র্যাগড রাখার জন্য একটি কম সূচক ইত্যাদি there
এর কিছু পটভূমি রাখার জন্য, আমি আগে কখনও কোনও টেবিলটি পাই নি যা পিকে ছাড়া রেফারেন্স করা হচ্ছে। যাইহোক, কভারিং কলামগুলির সাথে একটি এনসি সূচি টেবিলের সাথে যুক্ত করা হয়েছিল তার অর্থ আমার চিন্তাভাবনাটি খাপ খাইয়ে নেওয়া দরকার।