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

कंप्यूटेड कॉलम फंक्शन के साथ स्कीमा बाइंडिंग

गणना किए गए कॉलम पर इंडेक्स जोड़ना असंभव है, जब तक कि यह नियतात्मक न हो।

"नियतात्मक कार्य हमेशा एक ही परिणाम लौटाते हैं जब भी उन्हें इनपुट मानों के एक विशिष्ट सेट के साथ बुलाया जाता है और डेटाबेस की एक ही स्थिति दी जाती है। नॉनडेटर्मिनिस्टिक फ़ंक्शन हर बार अलग-अलग परिणाम लौटा सकते हैं जब उन्हें इनपुट मानों के एक विशिष्ट सेट के साथ बुलाया जाता है। भले ही डेटाबेस बताता है कि वे एक्सेस करते हैं वही रहता है।"

उदाहरण:

CREATE FUNCTION dbo.FuncA()
RETURNS [float]
WITH SCHEMABINDING    -- required option
BEGIN
  RETURN 1.0   -- DB engine parses body, and marks this func. as 'deterministic'
END
GO

CREATE TABLE TableA (
  K int primary key clustered,
  A AS dbo.FuncA() PERSISTED    -- must be persisted
)
GO

CREATE VIEW ViewA
WITH SCHEMABINDING    -- required option
AS
  SELECT K, A FROM dbo.TableA
GO

CREATE UNIQUE CLUSTERED INDEX IDX1 ON dbo.ViewA (K, A)
GO

आपको PERSISTED specify निर्दिष्ट करना होगा सटीक डेटा प्रकारों जैसे [real] . के लिए और [float] , अन्य मामले में आप गणना किए गए कॉलम के साथ एक दृश्य पर स्वतंत्र रूप से एक इंडेक्स बना सकते हैं ([दशमलव] ठीक रहेगा)।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या मुझे कैस्केड डिलीट नियम का उपयोग करना चाहिए?

  2. HttpWebRequest SQLCLR के भीतर पहली बार धीरे-धीरे चलता है

  3. SQL सर्वर समानांतर बैकअप पुनर्स्थापना -2

  4. डेटासेट पर आधारित SSRS एकाधिक मान पैरामीटर फ़िल्टर

  5. 'IF EXISTS... UPDATE .. ELSE .. INSERT' का उपयोग करने का खतरा और विकल्प क्या है?