ฉันมีตารางที่มีขนาดใหญ่มากไม่กี่แห่งที่มีโครงสร้างพื้นฐานแบบเดียวกัน แต่ละคนมีRowNumber (bigint)
และDataDate (date)
คอลัมน์ ข้อมูลถูกโหลดโดยใช้ SQLBulkImport ทุกคืนและไม่มีการโหลดข้อมูล "ใหม่" - บันทึกประวัติ (SQL Standard ไม่ใช่ Enterprise ดังนั้นจึงไม่มีการแบ่งพาร์ติชัน)
เนื่องจากข้อมูลแต่ละบิตจำเป็นต้องเชื่อมโยงกลับไปที่ระบบอื่น ๆ และการRowNumber/DataDate
รวมกันแต่ละครั้งไม่ซ้ำกันนั่นคือคีย์หลักของฉัน
ฉันสังเกตเห็นว่าเนื่องจากวิธีที่ฉันกำหนด PK ใน SSMS Table Designer RowNumber
แสดงรายการที่หนึ่งและDataDate
สอง
ฉันยังสังเกตเห็นว่าการกระจายตัวของฉันมักจะสูงมาก ~ 99%
ตอนนี้เพราะแต่ละรายการDataDate
ปรากฏเพียงครั้งเดียวฉันคาดว่าเครื่องมือสร้างดัชนีจะเพิ่มไปยังหน้าเว็บในแต่ละวัน แต่ฉันสงสัยว่าจริง ๆ แล้วการจัดทำดัชนีอิงตามลำดับRowNumber
แรกหรือไม่และต้องเปลี่ยนทุกอย่างอื่นหรือไม่
Rownumber
ไม่ใช่คอลัมน์ข้อมูลประจำตัว แต่เป็น int ที่สร้างขึ้นโดยระบบภายนอก (น่าเศร้า) DataDate
มันรีเซ็ตในช่วงเริ่มต้นของแต่ละคน
ตัวอย่างข้อมูล
RowNumber | DataDate | a | b | c.....
1 |2013-08-01| x | y | z
2 |2013-08-01| x | y | z
...
1 |2013-08-02| x | y | z
2 |2013-08-02| x | y | z
...
ข้อมูลกำลังถูกโหลดRowNumber
ตามลำดับหนึ่งรายการDataDate
ต่อการโหลด
กระบวนการนำเข้าเป็น bcp - ฉันได้ลองโหลดไปยังตารางชั่วคราวแล้วเลือกตามลำดับจากที่นั่น ( ORDER BY RowNumber, DataDate
) แต่ยังคงมีการกระจายตัวสูง