2011-03-17 36 views
0

我有另一個艱難的MySQL查詢,我正在努力解決。我需要一個將在單個命令中返回以下內容的查詢:MySQL查詢返回,Schema_Name,Table_NAme,計數,Size_of_Table,Primary_Key和Auto_Increment_Key

+----------+------------------------------+-----------+-------------+----------------+--------------------+ 
| Database | Table_Name     | Count  | Size  | Primary-Key | Auto_Increment_Key | 
+----------+------------------------------+-----------+-------------+----------------+--------------------+ 
| mydb  | account_length    |  2408 | 0.04 Mb  | account_id  | account_id   | 
| mydb  | account_log     |  1225 | 0.09 Mb  | log_id   | NULL    | 

我還是MySQL的新手。我已經嘗試了針對information_schema的各種查詢,但一直無法獲得返回所需數據的查詢。

該查詢只會得到一個表的行數,它的大小以MB爲單位,它是主鍵列,它是auto_increment鍵列。

我很感激任何幫助。

感謝

回答

3

像這樣的事情會幫助你:

SELECT t.table_schema, 
     t.table_name, 
     Round((t.data_length + t.index_length)/1048576, 2) AS sizemb, 
     c1.column_name           AS primarycol, 
     c2.column_name           AS 
     autoincrementcol 
FROM information_schema.tables t 
     LEFT JOIN information_schema.columns c1 
     ON t.table_schema = c1.table_schema 
      AND t.table_name = c1.table_name 
      AND c1.column_key = 'PRI' 
     LEFT JOIN information_schema.columns c2 
     ON t.table_schema = c2.table_schema 
      AND t.table_name = c2.table_name 
      AND c2.extra = 'auto_increment' 
WHERE t.table_schema = '............' 
+0

大一如既往的解決方案。 ;)在我看來,你忘記了index_length。 – 2011-03-17 21:51:11

+1

我也包括了。 – Pentium10 2011-03-17 21:56:00

+0

你太棒了。我正在寫我的解決方案,但你太快了。恭喜。不幸的是我已經完成了我的每日票數。 ;) – 2011-03-17 21:59:35