2012-08-14 11 views
13

द्वारा उपयोग किए गए 8 के पेजों की संख्या क्या मैं टी-एसक्यूएल का उपयोग कर सकता हूं ताकि मुझे 8K पृष्ठों की संख्या दिखा सकें जो एक तालिका अपनी पंक्तियों को संग्रहीत करने के लिए उपयोग कर रही है?एसक्यूएल सर्वर: तालिका और/या डेटाबेस

साथ ही, क्या मैं डेटाबेस के 8K पृष्ठों की संख्या देख सकता हूं? इस तरह

उत्तर

17

कोशिश कुछ:

-- Total # of pages, used_pages, and data_pages for a given heap/clustered index 
SELECT 
    t.NAME AS TableName, 
    p.rows AS RowCounts, 
    SUM(a.total_pages) AS TotalPages, 
    SUM(a.used_pages) AS UsedPages, 
    (SUM(a.total_pages) - SUM(a.used_pages)) AS UnusedPages 
FROM 
    sys.tables t 
INNER JOIN  
    sys.indexes i ON t.OBJECT_ID = i.object_id 
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id 
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id 
WHERE 
    t.NAME NOT LIKE 'dt%' 
    AND t.is_ms_shipped = 0 
    AND i.OBJECT_ID > 255 
GROUP BY 
    t.Name, p.Rows 
ORDER BY 
    t.Name 

कि तुम टेबल द्वारा इस्तेमाल किया पृष्ठों से पता चलता - इस्तेमाल किया, अप्रयुक्त और कुल।

पूरे डेटाबेस के लिए - बस प्रत्येक तालिका के लिए पृष्ठों को सारांशित करें और प्रत्येक डेटाबेस के लिए दोहराएं। कुछ सवाल के लिए rows..My खोज से बाहर दिखा गिनती के साथ SQLSERVER2012 से

+0

इस्तेमाल किया इसका मतलब यह है कि हम इस का उपयोग कर सकते के साथ जवाब अद्यतन उन तालिकाओं के लिए भरने वाले कारक या इंडेक्स को बढ़ाने के लिए क्वेरी जिनमें उच्च उपयोग नहीं किया गया स्थान है। ? – singhswat

1

एक और तरीका मुझे यहाँ करने के लिए नेतृत्व और मैं एक मैं

select 
object_name(object_id) as 'tablename', 
count(*) as 'totalpages', 
sum(Case when is_allocated=0 then 1 else 0 end) as 'unusedPages', 
sum(Case when is_allocated=1 then 1 else 0 end) as 'usedPages' 
from sys.dm_db_database_page_allocations(db_id(),null,null,null,'DETAILED') 
group by 
object_name(object_id) 
संबंधित मुद्दे