Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

आप टेबल-वैल्यू फ़ंक्शन का उपयोग कब करेंगे?

तालिका-मूल्यवान फ़ंक्शन "बस" पैरामीटरयुक्त दृश्य हैं। यह उन्हें तर्क को समाहित करने के लिए बेहद शक्तिशाली बनाता है जो अन्यथा एक अपारदर्शी संग्रहीत प्रक्रिया के पीछे छिपा होगा। यहां एक उदाहरण दिया गया है:

इनलाइन तालिका-मूल्यवान फ़ंक्शन:

create function dbo.GetClients (
    @clientName nvarchar(max) = null
)
returns table
return (
    select *
    from dbo.Clients as a
    where ((a.ClientName = @clientName) or a.ClientName is null)
);

संग्रहीत प्रक्रिया:

create procedure dbo.usp_GetClients (
    @clientName nvarchar(max) = null
)
as
begin;
    select *
    from dbo.Clients as a
    where ((a.ClientName = @clientName) or a.ClientName is null)
end;

संग्रहीत प्रक्रिया कॉल के विपरीत, एक तालिका-मूल्यवान फ़ंक्शन मुझे dbo.GetClients से तर्क लिखने की अनुमति देता है अन्य वस्तुओं के साथ:

select *
from dbo.GetClients(N'ACME') as a
join ... as b
    on a.ClientId = b.ClientId

ऐसी स्थितियों में मैं संग्रहीत कार्यविधि का उपयोग करने की कल्पना नहीं कर सकता क्योंकि तालिका-मूल्यवान फ़ंक्शन की तुलना में यह कितना प्रतिबंधात्मक है। एकाधिक ऑब्जेक्ट्स से परिणामों को संयोजित करने के लिए मुझे एक अस्थायी तालिका, तालिका चर, या एप्लिकेशन परत का उपयोग करके अपने आस-पास के डेटा को मार्शल करने के लिए मजबूर होना पड़ेगा।

इनलाइन तालिका-मूल्यवान फ़ंक्शंस "इनलाइन" बिट के कारण विशेष रूप से भयानक हैं जो शायद यहां सबसे अच्छी तरह से समझाया गया है। यह ऑप्टिमाइज़र को इस तरह के कार्यों को उन वस्तुओं की तुलना में अलग तरीके से व्यवहार करने की अनुमति देता है जो वे इनकैप्सुलेट करते हैं, जिसके परिणामस्वरूप लगभग इष्टतम प्रदर्शन योजनाएं होती हैं (यह मानते हुए कि आपकी अनुक्रमणिका और आंकड़े आदर्श हैं)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे ठीक करें "अमान्य वस्तु का नाम 'OPENJSON'।" SQL सर्वर में

  2. SQL सर्वर (T-SQL उदाहरण) में 'datetime2' को 'तिथि' में बदलें

  3. SQL सर्वर 2019 में ट्रिगर इवेंट प्रकारों की श्रेणीबद्ध सूची

  4. SQL सर्वर में किसी अन्य संग्रहीत कार्यविधि में संग्रहीत कार्यविधि निष्पादित करें

  5. SQL सर्वर में Msg 241 "दिनांक और/या समय को वर्ण स्ट्रिंग से कनवर्ट करते समय रूपांतरण विफल" ठीक करें