พื้นหลัง
ฉันเขียนรายงานขนาดใหญ่จำนวนมากและโดยทั่วไปแล้วรักษาฐานข้อมูลสุขภาพขนาดใหญ่ (เขียน SP, ฟังก์ชั่น, งาน, ฯลฯ ) สคีมาดั้งเดิมและซอฟต์แวร์ที่ใช้นั้นมาจากผู้จำหน่ายรายอื่นดังนั้นฉันจึงไม่สามารถเปลี่ยนแปลงโครงสร้างได้มากนัก มีบันทึกมากมายที่ต้องมีการติดตามเช่นห้องปฏิบัติการขั้นตอนวัคซีน ฯลฯ และพวกมันกระจัดกระจายไปทั่วโต๊ะหลายสิบแห่งซึ่งหลายแห่งถูกป่องและจัดทำดัชนีไม่ดี (ฉันสามารถแก้ไขปัญหานี้ได้บ้าง)
ปัญหา
ปัญหาคือเนื่องจากเรามีการควบคุม DB น้อยและเนื่องจากสามารถเปลี่ยนแปลงได้จากการอัพเดทหรือแพทช์ใด ๆ ทำให้การเขียนและการบำรุงรักษารายงานเหล่านี้ยากและน่าเบื่อโดยเฉพาะอย่างยิ่งเมื่อมีการทับซ้อนกันจำนวนมาก สิ่งที่ต้องทำคือแพทช์เดียวและฉันติดเขียนส่วนใหญ่ของรายงานโหล นอกจากนี้เคียวรีกลายเป็นสับสนและช้าลงเมื่อการรวมซ้อนเลือกและซ้อนกัน
"ทางออก" ของฉัน
แผนของฉันคือการเขียนระเบียนทั้งหมดเหล่านี้ลงในตาราง "catch-all" หนึ่งตารางและเขียนทริกเกอร์บนตารางดั้งเดิมเพื่อรักษาระเบียนในตารางรวมนี้ แน่นอนฉันต้องมั่นใจว่าตัวกระตุ้นของฉันยังคงอยู่หลังจากการอัพเดต แต่จะง่ายกว่ามากจากมุมมองการบำรุงรักษาและเพียงแค่อ้างอิงข้อมูล
ตารางจะบางและยาวเก็บเฉพาะข้อมูลที่ต้องการเช่นนี้:
CREATE TABLE dbo.HCM_Event_Log (
id INT IDENTITY,
type_id INT NULL,
orig_id VARCHAR(36) NULL,
patient_id UNIQUEIDENTIFIER NOT NULL,
visit_id UNIQUEIDENTIFIER NULL,
lookup_id VARCHAR(50) NULL,
status VARCHAR(15) NULL,
ordered_datetime DATETIME NULL,
completed_datetime DATETIME NULL,
CONSTRAINT PK_HCM_Event_Log PRIMARY KEY CLUSTERED (id)
)
จากนั้นฉันก็จะมีตารางที่สัมพันธ์กันหลายอย่างสำหรับสิ่งต่าง ๆ เช่นกลุ่ม type_id และรายการ
ฉันเริ่มที่จะเดาความคิดที่สองเนื่องจากตารางเหล่านี้เขียนขึ้นมาไม่มากนัก SP และรายงานที่ฉันกำลังเขียนจะอ้างอิงข้อมูลมากเช่นกัน ดังนั้นฉันกังวลว่าตารางนี้จะกลายเป็นการล็อกระเบียนและฝันร้ายของการแสดงด้วย I / O มากมาย
คำถามของฉัน
เป็นความคิดที่ดีหรือไม่ดี? ฉันรู้ว่าทุกสถานการณ์แตกต่างกันใน SQL Server (2008 r2 Standard Edition BTW) และกฎ "บางครั้ง" แต่ฉันแค่มองหาคำแนะนำทั่วไป
ฉันเริ่มพิจารณาใช้นายหน้าบริการ แต่ฉันจะทำการอัปเดต / แทรกง่าย ๆ เท่านั้น ( ดูทางเลือกของคำตอบที่ยอมรับ ) ข้อมูลในหลาย ๆ กรณีจำเป็นต้องเป็นเรียลไทม์ดังนั้นการใช้ฐานข้อมูลสำรองจะไม่สามารถใช้งานได้จริง ประสิทธิภาพเป็นปัญหาสำหรับเราอยู่แล้ว แต่ส่วนใหญ่เกี่ยวข้องกับฮาร์ดแวร์ที่จะแก้ไขได้ในไม่ช้า