mysql 表結構test表,7700w+數據:
CREATE TABLE `test` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`keyword` varchar(100) CHARACTER SET utf8 DEFAULT '' COMMENT '關鍵詞',
`platform` tinyint(4) NOT NULL DEFAULT '2' COMMENT '',
`word_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '詞類型',
`ctime` int(10) DEFAULT '0' COMMENT '創建時間',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_keyword` (`keyword`) USING BTREE,
KEY `idx_ctime` (`ctime`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=77715192 DEFAULT CHARSET=utf8mb4 comment='測試表';
兩種操作方式:
一、直接遠程跟mysql 連接,遠程讀取mysql 表的數據,此種方式讀取非常慢,但是可以自定義某些字段,engine=MySQL 不能用小寫。
clickhouse 命令行執行,新建 test3 表,只取 id,keyword,ctime 3個字段,可參考官方文檔
CREATE TABLE test3
(
`id` UInt32,
`keyword` String,
`ctime` UInt32
)ENGINE = MySQL('192.168.0.1:3306', 'db_name', 'table_name', 'user_name', 'password');
成功后,執行sql 查詢 select count(`id`) from test3; 用時63秒
執行sql 查詢 select * from test3 order by id desc limit 5; 用時125秒
二、創建clickhouse 表,把mysql 的數據導入進來,命令行執行 ,只能直接拷貝整個表里面的所有字段,創建 test2表
CREATE TABLE test2 ENGINE = MergeTree
order by id AS
SELECT * FROM mysql('192.168.0.1:3306', 'db_name', 'table_name', 'user_name', 'password');
會直接導入所有的7700w+數據,用時 161秒
成功后,執行sql 查詢 select count(`id`) from test2; 用時3.5秒
執行sql 查詢 select * from test2 order by id desc limit 5; 用時0.5秒