首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 快速查詢資料庫表數量的標準方法

     編輯:MySQL 資料庫相關知識

核心 SQL

SELECT COUNT(*) AS table_count
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_database_name'
  AND TABLE_TYPE = 'BASE TABLE';

欄位說明

  • TABLE_SCHEMA:資料庫名稱(區分大小寫,取決於 lower_case_table_names 設定)。
  • TABLE_TYPE:'BASE TABLE' 為實體表,排除 'VIEW'(視圖)。
  • information_schema.TABLES:MySQL 內建元資料表,所有使用者可查,權限受限於可見資料庫。

常見變體

1. 包含視圖總數

SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'dbname';

2. 列出所有表名與類型

SELECT TABLE_NAME, TABLE_TYPE, ENGINE, TABLE_ROWS, CREATE_TIME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'dbname'
ORDER BY TABLE_NAME;

3. 批量統計多個資料庫

SELECT TABLE_SCHEMA AS `database`, COUNT(*) AS table_count
FROM information_schema.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
GROUP BY TABLE_SCHEMA
ORDER BY table_count DESC;

效能提示

  • information_schema 查詢在表極多(數萬)時可能較慢,因需掃描目錄/元資料。
  • 生產環境頻繜統計建議快取結果或使用 SHOW TABLE STATUS(但需切換資料庫)。
  • 避免在交易高峰期對大量表執行此查詢。

對比:SHOW TABLES vs information_schema

方法優點缺點
SHOW TABLES FROM dbname簡潔、快速(僅列名)、無需指定 schema無法直接 COUNT、無法過濾視圖、難以在應用程式中處理結果集
information_schema.TABLES標準 SQL、可過濾/排序/統計、可跨庫查詢、程式友善極大量表時稍慢、需完整 schema 名稱

總結

使用 information_schema.TABLES 配合 TABLE_SCHEMA 與 TABLE_TYPE='BASE TABLE' 是最標準、可移植、程式友善的取得表數量方法。記得替換 'your_database_name' 為實際資料庫名稱。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved