ฉันเข้าใจว่าอาจมีความแตกต่างในความหมายหรือเจตนาระหว่างทั้งสอง แต่มีความแตกต่างด้านพฤติกรรมหรือประสิทธิภาพระหว่างคีย์หลักที่คลัสเตอร์และดัชนีที่ไม่ซ้ำกันหรือไม่
ฉันเข้าใจว่าอาจมีความแตกต่างในความหมายหรือเจตนาระหว่างทั้งสอง แต่มีความแตกต่างด้านพฤติกรรมหรือประสิทธิภาพระหว่างคีย์หลักที่คลัสเตอร์และดัชนีที่ไม่ซ้ำกันหรือไม่
คำตอบ:
ความแตกต่างหลักอย่างหนึ่งคือดัชนีเฉพาะสามารถมีค่า NULL ที่ไม่อนุญาตให้ใช้ในคีย์หลัก จัดเป็นคลัสเตอร์หรือไม่นี่คือความแตกต่างหลักระหว่างการใช้งานจริงของคีย์หลักเมื่อเทียบกับคีย์เฉพาะ
โอ้และความจริงที่ว่าตารางสามารถมีหนึ่ง PK และสหราชอาณาจักรจำนวนมาก :-)
สิ่งเหล่านี้มีความแตกต่างทั้งสองในเจตนาที่ไม่ได้มีประสิทธิภาพ มิฉะนั้นฉันไม่คิดว่าจะมีความแตกต่าง หลัง PK หรือสหราชอาณาจักรใด ๆ SQL Server จะสร้างดัชนี (ขึ้นอยู่กับการร้องขอการทำคลัสเตอร์หรือไม่) และวิธีที่ใช้นั้นโปร่งใสสำหรับแหล่งที่มา
PRIMARY KEY
และNOT NULL UNIQUE
อดีตจะยากมากที่จะกลายเป็นNULL UNIQUE
(โดยเฉพาะอย่างยิ่งหากมีการอ้างอิงข้อ จำกัด โดยคีย์ต่างประเทศแล้ว) แน่นอนจะป้องกันการเปลี่ยนแปลงอุบัติเหตุจากการNOT NULL
NULL
ระหว่างคีย์หลักที่ทำคลัสเตอร์และดัชนีของคลัสเตอร์ที่ไม่ซ้ำกันจะไม่มีความแตกต่างอื่นใดนอกจากดัชนีที่ไม่ซ้ำของคลัสเตอร์ที่สามารถมีค่า NULL
ดัชนีคลัสเตอร์ที่ไม่ซ้ำมีตัวระบุเฉพาะที่ต้องจัดการกับค่าที่ไม่ซ้ำกัน
NOT NULL UNIQUE CLUSTERED
หรือ (B) เพื่อเน้นว่า UQ ที่เจาะจงคือ "พิเศษ" ในแง่ของข้อมูลเมตาถึงแม้ว่า RDMS นั้นเป็นผู้ไม่เชื่อเรื่องพระเจ้า?