首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 快速找出資料量最大的資料表

     編輯:MySQL 綜合教學

資料庫擁有數十上百張表時,逐一 COUNT(*) 統計行數極其低效。MySQL 的 information_schema.TABLES 視圖預先統計各表行數,可秒級定位大表。

查詢 Top 10 大表

USE information_schema;
SELECT table_name, table_rows
FROM tables
WHERE table_schema = 'your_database'  -- 指定資料庫,避免跨庫干擾
ORDER BY table_rows DESC
LIMIT 10;

關鍵欄位說明

欄位含義
TABLE_ROWS預估行數(InnoDB 為掃描估算,非精確值)
DATA_LENGTH資料檔大小(位元組)
INDEX_LENGTH索引檔大小(位元組)
DATA_LENGTH + INDEX_LENGTH表總佔用空間
ENGINE儲存引擎

精確統計 vs 估算值

  • MyISAM:TABLE_ROWS 為精確值,儲存在表頭。
  • InnoDB:TABLE_ROWS 為掃描估算,誤差可達 40%~50%。
  • 精確行數:SELECT COUNT(*) FROM table_name;(InnoDB 需全表掃描,大表慎用)。

為何 TABLES 是記憶體表?

SHOW CREATE TABLE tables\G
-- ENGINE=MEMORY

information_schema 下的表為 MEMORY 引擎,啟動時由背景執行緒掃描填充。頻繁寫入的表統計資訊可能過舊,執行 ANALYZE TABLE tbl_name; 可更新統計資訊,改善執行計畫準確度。

實務建議

  1. 定位大表後,結合 DATA_LENGTH + INDEX_LENGTH 評估空間佔用。
  2. 大表優化優先順序:歸檔歷史資料 → 分區表 → 索引優化 → 讀寫分離。
  3. 監控腳本建議定期記錄 TABLE_ROWS 趨勢,預警暴增風險。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved