คำถามติดแท็ก physical-design

1
คีย์หลักคอมโพสิตในฐานข้อมูล SQL Server แบบหลายผู้เช่า
ฉันกำลังสร้างแอพหลายผู้เช่า (ฐานข้อมูลเดียวสกีมาเดียว) โดยใช้ ASP Web API, Entity Framework และฐานข้อมูล SQL Server / Azure แอปนี้จะใช้งานโดยลูกค้า 1,000-5,000 คน ตารางทั้งหมดจะมีฟิลด์TenantId(Guid / UNIQUEIDENTIFIER) ตอนนี้ฉันใช้คีย์หลักของฟิลด์เดียวซึ่งเป็นรหัส (Guid) แต่ด้วยการใช้เพียงแค่รหัสเขตข้อมูลฉันต้องตรวจสอบว่าข้อมูลที่ให้โดยผู้ใช้นั้นมาจาก / สำหรับผู้เช่าที่เหมาะสมหรือไม่ ตัวอย่างเช่นฉันมีSalesOrderตารางที่มีCustomerIdเขตข้อมูล ทุกครั้งที่ผู้ใช้โพสต์ / อัปเดตคำสั่งขายฉันต้องตรวจสอบว่าCustomerIdมาจากผู้เช่ารายเดียวกันหรือไม่ แย่ลงเพราะผู้เช่าแต่ละรายอาจมีหลายสาขา แล้วฉันจะมีการตรวจสอบและTenantId OutletIdมันเป็นฝันร้ายของการบำรุงรักษาและไม่ดีต่อประสิทธิภาพ ฉันคิดว่าจะเพิ่มไปยังคีย์หลักพร้อมกับTenantId Idและอาจเพิ่มOutletIdด้วย ดังนั้นหลักสำคัญในSalesOrderตารางจะเป็น: Id, และTenantId OutletIdข้อเสียของวิธีการนี้คืออะไร? ประสิทธิภาพจะเจ็บอย่างรุนแรงโดยใช้คีย์ผสมหรือไม่ คีย์ใบสั่งผสมมีความสำคัญหรือไม่ มีวิธีแก้ปัญหาที่ดีกว่าสำหรับฉันหรือไม่?

3
วิธีที่เร็วที่สุดในการดึงข้อมูลแถวสุดท้ายจากตารางคืออะไร
ฉันมีตาราง PostgreSQL Pricesโดยมีคอลัมน์: price (ทศนิยม) product_id (Int) นอกจากนี้ยังมีcreated_atและupdated_atคอลัมน์ ราคาอัพเดทเป็นประจำและฉันเก็บราคาเก่าไว้ในตาราง สำหรับผลิตภัณฑ์ที่กำหนดราคาสุดท้ายในตารางคือราคาปัจจุบัน วิธีที่มีประสิทธิภาพที่สุดในการรับราคาสุดท้ายสำหรับผลิตภัณฑ์เฉพาะคืออะไร: ดัชนีproduct_idและแบบสอบถามสำหรับระเบียนสุดท้าย เพิ่มคอลัมน์ที่สามactive(บูลีน) เพื่อทำเครื่องหมายราคาล่าสุดและสร้างดัชนีคอมโพสิต ( product_idและactive) หรืออย่างอื่น?

1
PostgreSQL จะสั่งซื้อเร็กคอร์ดใหม่บนดิสก์ได้อย่างไร (หลังคลัสเตอร์บนคีย์หลัก)
จำเป็นต้องรู้วิธีการสั่งซื้อ PostgreSQL บนดิสก์ ในกรณีนี้ฉันต้องการใช้ประโยชน์จากชุดค่าผสมดัชนีตามที่ระบุในเอกสารซึ่งตามที่ฉันเข้าใจใช้บิตแมปเพื่อรับแถวที่ตรงกันและคืนค่าตามตำแหน่งทางกายภาพของพวกเขา ตารางในคำถามถูกทำคลัสเตอร์โดยคีย์หลัก ตามที่ฉันเข้าใจแล้ว PostgreSQL จะไม่ทำการจัดกลุ่มโดยอัตโนมัติหลังจากการจัดกลุ่มเสร็จสิ้น (แม้ว่าจะจำได้ว่าจัดกลุ่มตามดัชนีที่แน่นอน) ตอนนี้เนื่องจากนี่คือคีย์หลักฉันสงสัยว่าคำสั่งเก็บข้อมูลจริงจะเป็นไปตามนั้นหรือไม่ (ซึ่งถ้าเป็นจริงฉันต้องการใช้เพื่อประโยชน์ของเราสำหรับการสืบค้นเฉพาะ) โดยสรุป PostgreSQL จะสั่งซื้อเรกคอร์ดใหม่โดยเฉพาะอย่างยิ่งหลังจากการจัดกลุ่มได้อย่างไร ขอบคุณมาก ๆ!
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.