日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

概述

前面已經介紹了Oracle如何去獲取某用戶下的所有表的行數,所以就不介紹了,今天主要分享的是怎么去獲取MySQL數據庫下所有表的數據行數,主要介紹3個方法。


1、估算某個數據庫下的所有表的記錄數

可以用MySQL 自帶的information_schema.tables 表的統計信息,初步判斷表的數據行大小。

select table_schema,table_name,table_type,table_rows from information_schema.tables where table_schema='fsl_prod' order by table_rows desc;
詳解mysql數據庫三種快速獲得某個數據庫下的所有表的記錄數方法

 

對于非事務性表, table_rows 這個值是精確的,對于事務性引擎,這個值通常是估算的。例如 MyISAM 存儲精確的數目。對于其它存儲引擎,比如InnoDB本值是一個大約的數,與實際值相差可達40到50%。在這些情況下,使用SELECT COUNT(*) 來獲得準確的數目。對于在information_schema數據庫中的表,Rows值為NULL。


2、sql拼接統計某個數據庫下的所有表的記錄數(有點麻煩)

可以使用如下的 SQL 語句來批量統計數據庫中的表的行數:

SELECT
 CONCAT( 'SELECT "', TABLE_NAME, '", COUNT(*) FROM ', TABLE_SCHEMA, '.', TABLE_NAME, ' UNION ALL' ) EXEC_SQL 
FROM
 INFORMATION_SCHEMA.TABLES 
WHERE
 TABLE_SCHEMA = 'fsl_prod';
詳解mysql數據庫三種快速獲得某個數據庫下的所有表的記錄數方法

 

把生成的 SQL 語句拷貝出來,并去掉最后的一個“ UNION ALL ”就可以執行了。產生的示例 SQL 如下所示:

SELECT "act_demo_test", COUNT(*) FROM fsl_prod.act_demo_test UNION ALL
SELECT "act_demo_vacation", COUNT(*) FROM fsl_prod.act_demo_vacation UNION ALL
SELECT "act_evt_log", COUNT(*) FROM fsl_prod.act_evt_log UNION ALL
SELECT "act_exception", COUNT(*) FROM fsl_prod.act_exception UNION ALL
SELECT "wfl_business_rule_line", COUNT(*) FROM fsl_prod.wfl_business_rule_line;

運行結果:

詳解mysql數據庫三種快速獲得某個數據庫下的所有表的記錄數方法

 


3、存儲過程統計某個數據庫下的所有表的記錄數(多次復用)

3.1、創建中間表

CREATE TABLE table_rows (DB VARCHAR ( 20 ), TABLE_NAME VARCHAR ( 64 ), count bigint(30), last_update_date datetime ( 0 ) ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '記錄數據庫所有表的行數' ROW_FORMAT = Dynamic;

3.2、創建

下面的存儲過程用到了游標(cursor),循環(loop),動態SQL預處理(prepare)等技術,獲得的數據存到table_rows表。

CREATE PROCEDURE statis_rows(in v_schema varchar(50))
BEGIN 
DECLARE sql_str VARCHAR(5000);
declare no_more_departments integer DEFAULT 0;
DECLARE sql_cur CURSOR FOR (
 SELECT
 CONCAT(
 'select ',"'",table_schema,"'",",'",table_name,"',",'count(1)',' into @v_tab_schema,@v_tab_name,@v_count from ',
 TABLE_SCHEMA,
 '.',
 TABLE_NAME,
 ''
 )
 FROM
 information_schema.TABLES
 WHERE table_schema = v_schema
 and table_name <> 'table_rows'
);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_departments=1;
/* 打開游標,進入循環統計各表的記錄 */
OPEN sql_cur;
myLoop:LOOP
fetch sql_cur into sql_str;
 
if no_more_departments = 1 THEN
leave myLoop;
end if;
set @v_sql=sql_str;
prepare stmt from @v_sql;
EXECUTE stmt;
 
/* 將統計結果保存到表中,以便隨時都可以查看 */
INSERT INTO table_rows
VALUES
 (
 @v_tab_schema,
 @v_tab_name,
 @v_count,
 sysdate()
 );
 
/* 預處理編譯 SQL是占用資源的,需使用DEALLOCATE PREPARE釋放資源 */
DEALLOCATE prepare stmt;
end loop myLoop;
 
close sql_cur;
END
詳解mysql數據庫三種快速獲得某個數據庫下的所有表的記錄數方法

 

調用存儲過程:

call statis_rows('mysql');
call statis_rows('fsl_prod');
詳解mysql數據庫三種快速獲得某個數據庫下的所有表的記錄數方法

 


詳解mysql數據庫三種快速獲得某個數據庫下的所有表的記錄數方法

 

查看表行數

select * from table_rows;
詳解mysql數據庫三種快速獲得某個數據庫下的所有表的記錄數方法

分享到:
標簽:mysql
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定