निम्नलिखित पोस्टग्रेज़ SQL क्वेरी सभी स्कीमा और उनके आकार और अनुक्रमणिका आकारों से सभी तालिकाओं को सूचीबद्ध करेगी। यदि एक टेबल सिर्फ एक सूचकांक तालिका है, तो यह 100% सूचकांक के रूप में दिखाई देगा।लिस्टिंग तालिका और अनुक्रमणिका आकार के लिए एक पोस्टग्रेस एसक्यूएल क्वेरी सरलीकृत करें?
SELECT schema,
name,
pg_size_pretty(CASE WHEN is_index THEN 0 ELSE s END) AS size,
pg_size_pretty(CASE WHEN is_index THEN s ELSE st - s END) AS index,
CASE WHEN st = 0 THEN 0
WHEN is_index THEN 100
ELSE 100 - ((s*100)/st) END || '%' as ratio,
pg_size_pretty(st) as total
FROM (SELECT *,
st = s AS is_index
FROM (SELECT nspname as schema,
relname as name,
pg_relation_size(nspname || '.' || relname) as s,
pg_total_relation_size(nspname || '.' || relname) as st
FROM pg_class
JOIN pg_namespace ON (relnamespace = pg_namespace.oid)) AS p)
AS pp
ORDER BY st DESC LIMIT 30;
यह निम्न परिणाम देगा:
schema | name | size | index | ratio | total
----------------+------------------------+---------+---------+-------+---------
public | conf | 4072 kB | 4360 kB | 52% | 8432 kB
archive | product_param | 4048 kB | 3968 kB | 50% | 8016 kB
public | conf_pkey | 0 bytes | 4320 kB | 100% | 4320 kB
archive | product_value | 1568 kB | 1136 kB | 43% | 2704 kB
public | param_mapping | 1472 kB | 832 kB | 37% | 2304 kB
archive | supplie_price | 944 kB | 896 kB | 49% | 1840 kB
public | product_param_param_id | 0 bytes | 1552 kB | 100% | 1552 kB
archive | product_param_id | 0 bytes | 1536 kB | 100% | 1536 kB
मैं एक बिंदु है जहां मैं सभी से पूरी तस्वीर नहीं देख सकते हैं करने के लिए आ गया है, और यह थोड़ा बोझल पाने के लिए शुरू कर रहा है।
मुझे आश्चर्य है कि इसमें कुछ भी है जिसे सरल बनाया जा सकता है या अनावश्यक बनाया जा सकता है? अगर क्वेरी को अधिक सरल बनाया जा सकता है तो कॉलम जरूरी नहीं रहना चाहिए।
यह भी देखें http://stackoverflow.com/questions/2596624/how-do-you-find-the-disk-size-of-a-postgres-postgresql- टेबल और अपनी अनुक्रमणिका। – Vadzim