डेटाबेस में अशक्त कॉलम कभी-कभी प्रदर्शन समस्याओं का कारण बन सकते हैं। यह निश्चित रूप से यह नहीं कहना है कि अशक्त स्तंभ हमेशा प्रदर्शन समस्याओं का कारण बनेंगे, लेकिन यदि आपके पास प्रदर्शन समस्याएं होती हैं, तो अशक्त स्तंभों की पहचान संभावित रूप से कुछ सुराग प्रदान कर सकती है कि समस्या कहां है। कभी-कभी कॉलम बनाना NOT NULL प्रदर्शन में सुधार करने में मदद कर सकता है।
"शून्य कॉलम" से मेरा मतलब है, कॉलम जो न्यूल के लिए अनुमति देते हैं। यदि कॉलम की परिभाषा में NOT NULL शामिल नहीं है , तो यह NULL मानों की अनुमति देता है और यह "शून्य" है।
नीचे कोड है जो आपको SQL सर्वर में डेटाबेस में सभी अशक्त स्तंभों को सूचीबद्ध करने की अनुमति देता है।
उदाहरण 1 - INFORMATION_SCHEMA.COLUMNS
यह सूचना स्कीमा दृश्य उन सभी स्तंभों को सूचीबद्ध करता है जिन तक वर्तमान डेटाबेस में वर्तमान उपयोगकर्ता द्वारा पहुँचा जा सकता है। इसमें IS_NULLABLE . नाम का एक कॉलम होता है . यदि प्रासंगिक कॉलम NULL की अनुमति देता है, तो यह कॉलम
YES
returns देता है . अन्यथा,
नहीं
लौटा दिया गया है।
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE IS_NULLABLE = 'YES';
यह दृश्य से सभी स्तंभों को सूचीबद्ध करता है।
उदाहरण 2 - INFORMATION_SCHEMA.COLUMNS कम कॉलम निर्दिष्ट के साथ
हो सकता है कि आप नहीं चाहते कि सभी कॉलम दृश्य से वापस आ जाएं। यहां एक उदाहरण दिया गया है जिसमें कम कॉलम लौटाए गए हैं।
SELECT
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
COLUMN_DEFAULT,
DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE IS_NULLABLE = 'YES'
ORDER BY TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME;
उदाहरण 3 - sys.columns का उपयोग करना
यदि आप INFORMATION_SCHEMA.COLUMNS का उपयोग नहीं करना चाहते हैं देखें, तो आप sys.columns . को क्वेरी कर सकते हैं इसके बजाय देखें।
हालांकि, यदि आप टेबल और/या स्कीमा आदि वापस करना चाहते हैं, तो आपको कुछ जॉइन करने की आवश्यकता होगी।
उदाहरण:
SELECT
SCHEMA_NAME(t.schema_id) AS [Schema],
t.name AS [Table],
c.name AS [Column],
dc.definition AS [Column Default],
ty.name AS [Data Type]
FROM sys.tables AS t
INNER JOIN sys.columns AS c
ON t.object_id = c.object_id
LEFT JOIN sys.types AS ty
ON c.user_type_id = ty.user_type_id
LEFT JOIN sys.default_constraints dc
ON c.default_object_id = dc.object_id
WHERE c.is_nullable = 1
ORDER BY [Schema], [Table], [Column];