gbase8a中根據提供的表名統計表中現有的行數

2021-10-06 03:09:51 字數 2538 閱讀 1072

table1

table2

生成如下格式的資訊

aa.test_100:bb.test_100:9463294

格式說明:aa代表源資料庫,test_100源資料庫中的表,bb代表目標資料庫,test_100目標資料庫中的表,9463294代表行數

select concat(『select concat(concat(』』』,『aaa.』,table_name,』』,』:』,『in_bbb_aaa.』,table_name,』:』,』』』) ,count(rowid)) from 『,table_name,』 union all』) from information_schema.tablesm where m.table_schema=『test』;

select concat(concat(『aaa.info_config:in_bbb_aaa.info_config:』) ,count(rowid)) from info_config union all

select concat(concat(『aaa.m_page_view_log:in_bbb_aaa.m_page_view_log:』) ,count(rowid)) from m_page_view_log union all

select concat(concat(『aaa.sync_table:in_bbb_aaa.sync_table:』) ,count(rowid)) from sync_table union all

select concat(concat(『aaa.test:in_bbb_aaa.test:』) ,count(rowid)) from test union all

select concat(concat(『aaa.test1:in_bbb_aaa.test1:』) ,count(rowid)) from test1 union all

select concat(concat(『aaa.test_100:in_bbb_aaa.test_100:』) ,count(rowid)) from test_100union all

上面語句中最後一行語句中union all關鍵字需要去掉。

aaa.info_config:in_bbb_aaa.info_config:0

aaa.m_page_view_log:in_bbb_aaa.m_page_view_log:0

aaa.sync_table:in_bbb_aaa.sync_table:7

aaa.test:in_bbb_aaa.test:5

aaa.test1:in_bbb_aaa.test1:2

aaa.test_100:in_bbb_aaa.test_100:9463294

gbase8a 8.6.2.15-r1-dev.99722這個版本查詢上億表的時,通過查詢最大rowid來確定記錄數不準確,發現現象如下

1、有乙個剛過億的表,但查詢最大rowid確只有2千多萬,本來是想通過rowid來切片同步資料的,看來還有些問題,有個30多億的大表,對應的最大rowid也只有3億多。

select count() from aa

select count(rowid) from aa

select count() from aa where rowid>=0 and rowid<= 最大rowid

上面三條語句查詢的結果是一致的

疑問:1、rowid是隨錶插入記錄時,自動增長的,啟始值為0,最大值理論上是表記錄總數-1,但這裡相差確是10倍

2、通過where rowid>=0 and rowid<= 最大rowid查詢統計的記錄又是對的,rowid裡有重複值?

3、通過count(*)會快很多,原因可能是表記錄總數存在磁碟上。

1 aaa.h_data:in_bbb_aaa.h_data:0 aaa.h_data:in_bbb_aaa.h_data:0

格式說明:1代表中最大rowid值 ,aaa代表源資料庫,h_data源資料庫中的表,bbb代表目標資料庫,h_data目標資料庫中的表,0代表通過count(rowid)統計出來的行數,最後乙個0代表count(*)統計出來的行數

select concat(『select concat(』』』,『aaa.』,table_name,』』,』:』,『in_bbb_aaa.』,table_name,』:』,』』』,max(rowid)) as max_rowid,concat(』』』,『aaa.』,table_name,』』,』:』,『in_bbb_aaa.』,table_name,』:』,』』』,count(rowid)) as total_rowid ,concat(』』』,『aaa.』,table_name,』』,』:』,『in_bbb_aaa.』,table_name,』:』,』』』 ,count(*) ) as total_num from 『,table_name,』 union all』)

from information_schema.tablesm where m.table_schema=『test』and table_name in(』』,』』)

and table_name in(』』,』』)

gbase8a獲取大表資料SQL語句

專案背景 從gbase8a遷移資料到mysql5.6.46中,獲取大表記錄數 生成查詢某個schema下所有表的記錄數的sql語句 select concat select table schema,table name,as table name,count as total num from t...

GBase8a自身的系統表是如何存放和呼叫的

這裡的系統表就是元資料表。gbase8a 的系統表儲存於 gbase 資料庫中,除少數幾個表外為 express 引擎外,其它表都是 gssys 引擎。gbase8a 的系統表中儲存了表的定義 列的定義 儲存過程和自定義函式的定義 使用者及權 限的定義 系統事件的定義 相關日誌資訊等。gbase8a...

根據表名查詢所在的資料庫名 用游標

use master godeclare dbname varchar 100 declare sql varchar 1000 declare searchtablename varchar 100 set searchtablename rx claim detail declare dbnam...