ฉันมีตารางที่มี ~ 200 ล้านแถวและอีก 15 คอลัมน์ในนั้น ฉันวางแผนที่จะสร้างCOLUMNSTORE
ดัชนีบนโต๊ะของฉัน
จะมีการเปลี่ยนแปลงใด ๆ เกี่ยวกับประสิทธิภาพขึ้นอยู่กับลำดับของคอลัมน์ที่ฉันใช้ในดัชนี columnstore หรือไม่ ถ้าใช่ตรรกะอะไรที่อยู่เบื้องหลัง
ฉันมีตารางที่มี ~ 200 ล้านแถวและอีก 15 คอลัมน์ในนั้น ฉันวางแผนที่จะสร้างCOLUMNSTORE
ดัชนีบนโต๊ะของฉัน
จะมีการเปลี่ยนแปลงใด ๆ เกี่ยวกับประสิทธิภาพขึ้นอยู่กับลำดับของคอลัมน์ที่ฉันใช้ในดัชนี columnstore หรือไม่ ถ้าใช่ตรรกะอะไรที่อยู่เบื้องหลัง
คำตอบ:
ไม่คำสั่งไม่สำคัญ แต่ละคอลัมน์ถือว่าเป็นเอกเทศ
จากทีม SQL Server (เน้นการเพิ่ม):
โดยทั่วไปแล้วคุณจะต้องใส่คอลัมน์ทั้งหมดในตารางของคุณลงในดัชนี columnstore ไม่สำคัญว่าคุณจะเรียงลำดับรายการใดในคอลัมน์เพราะดัชนี columnstore ไม่มีคีย์เหมือนกับที่ดัชนี B-tree ทำ ภายในข้อมูลจะถูกจัดลำดับใหม่โดยอัตโนมัติเพื่อให้ได้การบีบอัดที่ดีที่สุด
คำสั่งซื้อไม่สำคัญอะไรจะเกิดอะไรขึ้นถ้าคุณควรรวมคอลัมน์ทั้งหมดจากตารางฐานในดัชนี columnstore - เพิ่มเติมผ่านคำตอบก่อนหน้าของฉันสำหรับคำถามนี้ที่นี่
ใน SQL Server 2012-2016 คุณมีแนวคิดเกี่ยวกับการกำจัดกลุ่ม ( http://social.technet.microsoft.com/wiki/contents/articles/5651.understanding-segment-elimination.aspx ) และคุณสามารถบังคับลำดับของ อย่างน้อย 1 คอลัมน์ (บวก 1 พิเศษภายในแต่ละพาร์ติชัน)
พิจารณาบทความต่อไปนี้ที่อธิบายการโหลดข้อมูลเพื่อการกำจัดเซกเมนต์ที่ดีขึ้น : การโหลดข้อมูลเพื่อการกำจัดเซ็กเมนต์ที่ดีขึ้น
มีคำตอบที่ยอดเยี่ยมโดย Aaron ในปี 2012 เพื่อขยายการ ...
ด้วย SQL 2014+ คุณมีดัชนี columnstore คลัสเตอร์ที่พร้อมใช้งาน เมื่อสร้างดัชนี columnstore แบบคลัสเตอร์จะไม่มีการเลือกคอลัมน์หรือตัวเลือกคำสั่งซื้อ อธิบายคอลัมน์ Columnstore แล้ว