5
สถาปัตยกรรมดัชนีที่เหมาะสมคืออะไรเมื่อถูกบังคับให้ใช้ IsDeleted (การลบแบบอ่อน)?
ขณะนี้เรามีฐานข้อมูลและแอปพลิเคชันที่มีอยู่ซึ่งทำงานได้อย่างสมบูรณ์ ฉันไม่มีความสามารถในการเปลี่ยนสถาปัตยกรรม ณ จุดนี้ วันนี้แต่ละตารางในฐานข้อมูลมีฟิลด์ "IsDeleted" NOT NULL BIT ที่มีค่าเริ่มต้นเป็น '0' เมื่อแอปพลิเคชัน "ลบ" ข้อมูลมันเพียงอัปเดตการตั้งค่าสถานะ IsDeleted เป็น 1 สิ่งที่ฉันมีปัญหาในการทำความเข้าใจคือดัชนีของแต่ละตารางควรมีโครงสร้างอย่างไร ตอนนี้ทุกแบบสอบถาม / เข้าร่วม / ฯลฯ จะดำเนินการตรวจสอบ IsDeleted เป็นมาตรฐานที่นักพัฒนาของเราต้องปฏิบัติตาม ที่ถูกกล่าวว่าฉันพยายามที่จะตรวจสอบว่าดัชนีคีย์หลักคลัสเตอร์ทั้งหมดของฉันในแต่ละตารางจะต้องมีการเปลี่ยนแปลงเพื่อให้รวมถึงคีย์หลักและฟิลด์ BIT IsDeleted นอกจากนี้เนื่องจากทุกแบบสอบถาม / เข้าร่วม / ฯลฯ ต้องใช้การตรวจสอบ IsDeleted เป็นข้อสมมติฐานที่เหมาะสมหรือไม่ที่ดัชนีทุกเดียว (ไม่ใช่คลัสเตอร์ด้วย) ควรรวมเขตข้อมูล IsDeleted เป็นเขตข้อมูลแรกของดัชนีหรือไม่ อีกคำถามหนึ่งที่ฉันมีคือดัชนีรอบตัวกรอง ฉันเข้าใจว่าฉันสามารถใส่ตัวกรองในดัชนีเช่น "WHERE IsDeleted = 0" เพื่อลดขนาดของดัชนี อย่างไรก็ตามเนื่องจากการเข้าร่วม / …