मैं एक मेडिकल-रिकॉर्ड सिस्टम के साथ काम कर रहा हूं जो स्प्रेडशीट जैसा दिखता है, कॉलम हेडर में दिनांक/समय, माप (जैसे चिकित्सक का नाम, आरएच, रक्त प्रकार) प्रत्येक पंक्ति के पहले कॉलम में, और अंतरंग सेल में एक मान। इस निर्माण पर आधारित रिपोर्टों को अक्सर प्रदर्शित होने के लिए इनमें से 10 या अधिक उपायों की आवश्यकता होती है।एसक्यूएल सर्वर: इनलाइन टेबल-वैल्यू यूडीएफ बनाम इनलाइन व्यू
रिपोर्टिंग उद्देश्यों के लिए, डेटासेट को प्रत्येक रोगी के लिए एक पंक्ति, माप की तारीख/समय, और प्रत्येक माप के लिए एक कॉलम की आवश्यकता होती है। संक्षेप में, किसी को 9 0 डिग्री से निर्माण करने की जरूरत है।
एक बिंदु पर, मैंने वास्तव में ऐसा करने के लिए SQL सर्वर की PIVOT कार्यक्षमता का उपयोग किया। कई कारणों से, यह स्पष्ट हो गया कि यह दृष्टिकोण काम नहीं करेगा। मैंने फैसला किया कि मैं वांछित प्रारूप में डेटा मालिश करने के लिए एक इनलाइन व्यू (IV) का उपयोग करूंगा। सरलीकृत क्वेरी जैसा दिखता है:
SELECT patient_id,
datetime,
m1.value AS physician_name,
m2.value AS blood_type,
m3.value AS rh
FROM patient_table
INNER JOIN (complex query here
WHERE measure_id=1) m1...
INNER JOIN (complex query here
WHERE measure_id=2) m2...
LEFT OUTER JOIN (complex query here
WHERE measure_id=3) m3...
आप देख सकते हैं, कुछ मामलों में इन IVs (भीतरी शामिल हों) जिसके परिणामस्वरूप डाटासेट प्रतिबंधित करने के लिए, अन्य मामलों में वे डाटासेट (बाएं बाहरी शामिल हों) प्रतिबंधित नहीं करते, उपयोग किया जाता है। हालांकि, माप_आईडी में अंतर को छोड़कर, 'जटिल क्वेरी' भाग अनिवार्य रूप से इन मापों में से प्रत्येक के लिए समान है। हालांकि यह दृष्टिकोण काम करता है, यह काफी बड़े SQL कथन, पुन: उपयोग की सीमा का कारण बनता है, और त्रुटियों को क्वेरी का खुलासा करता है।
मेरा विचार 'जटिल क्वेरी' और इनलाइन टेबल-वैल्यू यूडीएफ के साथ WHERE क्लॉज को प्रतिस्थापित करना था। यह प्रश्नों को थोड़ा सा सरल करेगा, त्रुटियों को कम करेगा, और कोड पुन: उपयोग बढ़ाएगा। मेरे दिमाग पर एकमात्र सवाल प्रदर्शन है। क्या यूडीएफ दृष्टिकोण प्रदर्शन में महत्वपूर्ण कमी का कारण बन जाएगा? क्या इससे मामलों में सुधार हो सकता है?
आपके समय और विचार के लिए धन्यवाद।
पारंपरिक विचार इस क्लाइंट पर काम नहीं करेंगे क्योंकि डीबीए डीबी में गैर-विक्रेता-परिभाषित वस्तुओं को भी प्रतिरोधी रखने के लिए प्रतिरोधी है। नतीजतन, अधिकांश प्रश्न प्रत्येक रिपोर्ट में एम्बेड किए गए हैं (हम सीआर का उपयोग कर रहे हैं)। यूडीएफ के बारे में मैंने जो कारण सोचा था वह उनकी मॉड्यूलरिटी है। कठिन हिस्सा विचार पर डीबीए बेच रहा है ... क्या ओरेकल के भौतिक दृश्य के समान अनुक्रमित दृश्य है? – craig
मैंने ओरेकल के साथ लंबे समय तक काम नहीं किया है, इसलिए मुझे नहीं पता। हालांकि, मैं इंगित करता हूं कि एक यूडीएफ एक गैर-विक्रेता-परिभाषित वस्तु है, इसलिए आप वहां एक ही पुशबैक में भाग सकते हैं। मेरा मानना है कि एक अस्थायी तालिका या चर के साथ धारक का जवाब आपकी सबसे अच्छी शर्त हो सकता है यदि आप वस्तुओं को संशोधित करने के लिए सीमित हैं। बस एक तरफ के रूप में, मैं विक्रेता डीबीएस से निपटने के दौरान, क्रॉस-लिंक्ड टेबल, आदि के साथ एक माध्यमिक डीबी बनाने के लिए जाते हैं। इस तरह से मैं अपने डेटाबेस के बाहर कस्टम कोड हो सकता है; आप भविष्य में एक विकल्प के रूप में खोजना चाह सकते हैं। –
इंडेक्स किए गए विचार ओरेकल भौतिक दृश्य के समान हैं। दृश्य को कुछ प्रतिबंधों के अनुरूप होना चाहिए: http://msdn.microsoft.com/en-us/library/ms191432.aspx और केवल एंटरप्राइज़ संस्करण डेटा पहुंच के लिए अनुक्रमित दृश्य का उपयोग करने पर विचार करेगा। मानक संस्करण और निचले संस्करणों को स्पष्ट रूप से iEXexED दृश्य के उपयोग को मजबूती से लागू करना चाहिए, http://msdn.microsoft.com/en-us/library/ms181151.aspx –