SQL में टेबल का साइज़ कैसे पता करें?
जवाबों:
एस क्यू एल सर्वर:-
sp_spaceused 'TableName'
या प्रबंधन स्टूडियो में: टेबल पर राइट क्लिक करें -> गुण -> भंडारण
माई एसक्यूएल:-
SELECT table_schema, table_name, data_length, index_length FROM information_schema.tables
साइबेस: -
sp_spaceused 'TableName'
data_lengthबाइट्स में तालिका का आकार है, न कि पंक्तियों की संख्या। देखें: dev.mysql.com/doc/refman/8.0/en/tables-table.html
रट्टी और हैम के पोस्ट (टिप्पणियों सहित) के जवाबों को जोड़कर मैं इसके साथ आया हूं, जो एसक्यूएल सर्वर के लिए अब तक का सबसे सुरुचिपूर्ण लगता है:
-- DROP TABLE #tmpTableSizes
CREATE TABLE #tmpTableSizes
(
tableName varchar(100),
numberofRows varchar(100),
reservedSize varchar(50),
dataSize varchar(50),
indexSize varchar(50),
unusedSize varchar(50)
)
insert #tmpTableSizes
EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'"
select * from #tmpTableSizes
order by cast(LEFT(reservedSize, LEN(reservedSize) - 4) as int) desc
यह आपको आरक्षित आकार के क्रम में अपने सभी तालिकाओं की एक सूची देता है, जो सबसे बड़े से लेकर सबसे छोटे तक के लिए क्रमबद्ध है।
GB में एक कस्टम नाम तालिका आकार खोजने के लिए एक क्वेरी ( https://stackoverflow.com/a/7892349/1737819 का संशोधन )। आप यह कोशिश कर सकते हैं, 'YourTableName' को अपनी तालिका के नाम से बदल दें।
SELECT
t.NAME AS TableName,
p.rows AS RowCounts,
CONVERT(DECIMAL,SUM(a.total_pages)) * 8 / 1024 / 1024 AS TotalSpaceGB,
SUM(a.used_pages) * 8 / 1024 / 1024 AS UsedSpaceGB ,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 / 1024 / 1024 AS UnusedSpaceGB
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
LEFT OUTER JOIN
sys.schemas s ON t.schema_id = s.schema_id
WHERE
t.NAME = 'YourTable'
AND t.is_ms_shipped = 0
AND i.OBJECT_ID > 255
GROUP BY
t.Name, s.Name, p.Rows
ORDER BY
UsedSpaceGB DESC, t.Name
CONVERT(DECIMAL,SUM(a.total_pages)) ताकि यह GB से छोटे तालिकाओं के लिए जानकारी प्रदर्शित करे
SQL सर्वर एक अंतर्निहित संग्रहित प्रक्रिया प्रदान करता है जिसे आप आसानी से एक तालिका का आकार दिखाने के लिए चला सकते हैं, जिसमें अनुक्रमणिका का आकार भी शामिल है ... जो आपको आश्चर्यचकित कर सकता है।
वाक्य - विन्यास:
sp_spaceused ‘Tablename’
अन्दर देखें :
http://www.howtogeek.com/howto/database/determine-size-of-a-table-in-sql-server/
और PostgreSQL में:
SELECT pg_size_pretty(pg_relation_size('tablename'));
SELECT table_name, pg_size_pretty(pg_relation_size(table_names.table_name)) AS size from (select table_name from information_schema.tables where table_schema = 'public') AS table_names ORDER BY pg_relation_size(table_names.table_name) DESC;
मुझे पता है कि SQL 2012 में (अन्य संस्करणों में काम कर सकता है) आप निम्न कार्य कर सकते हैं:
यह आपको शीर्ष 1000 तालिकाओं की एक सूची देगा और फिर आप इसे डेटा आकार आदि के आधार पर ऑर्डर कर सकते हैं।
SQL सर्वर, KB / MB में सभी तालिकाओं के लिए अच्छी तरह से स्वरूपित तालिका:
SELECT
t.NAME AS TableName,
s.Name AS SchemaName,
p.rows AS RowCounts,
SUM(a.total_pages) * 8 AS TotalSpaceKB,
CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
SUM(a.used_pages) * 8 AS UsedSpaceKB,
CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
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
LEFT OUTER JOIN
sys.schemas s ON t.schema_id = s.schema_id
WHERE
t.NAME NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND i.OBJECT_ID > 255
GROUP BY
t.Name, s.Name, p.Rows
ORDER BY
t.Name
आप एक अन्य सूत्र में Marc_s द्वारा उत्तर का उल्लेख कर सकते हैं, बहुत उपयोगी है।
यहाँ एक सरल क्वेरी है, यदि आप केवल सबसे बड़ी सारणी खोजने की कोशिश कर रहे हैं।
-- Find largest table partitions
SELECT top 20 obj.name, LTRIM (STR ( sz.in_row_data_page_count * 8, 15, 0) + ' KB') as Size, * FROM sys.dm_db_partition_stats sz
inner join sys.objects obj on obj.object_id = sz.object_id
order by sz.in_row_data_page_count desc