mysql的怎么查数据集 mysql怎么查询全部数据( 二 )


由于似乎字符串数据比数字值更容易汇总,所以内容是数字的,但它们是可变的类型 。
然后执行计算操作 。
用BLOB类型做GROUPBY似乎很慢 。
您可以在ClickHouse上使用MySQL数据,只需在下面的表格中指定它,而不是表名 。
启动ClickHouse客户端并进行测试 。
如果您在启动时不添加--multiline选项 , 则不会放置多行查询,因此请继续 。
SELECT
data1,
COUNT(*)
FROM mysql('localhost','mikage','testdata','mikage','')
GROUP BY data1
┌─data1─┬─COUNT()─┐
│4│1999013│
│3│1998988│
│2│1999993│
│5│2001553│
│1│2000453│
└───────┴─────────┘
5 rows in set. Elapsed: 2.685 sec. Processed 10.00 million rows,40.00 MB(3.72 million rows/s.,14.90 MB/s.)
SELECT
data2,
COUNT(*)
FROM mysql('localhost','mikage','testdata','mikage','')
GROUP BY data2
┌─data2─┬─COUNT()─┐
│6│999786│
│8│1001805│
│9│1001438│
│3│1000357│
│2│1000648│
│4│998349│
│5│998889│
│10│999424│
│1│1000530│
│7│998774│
└───────┴─────────┘
10 rows in set. Elapsed: 2.692 sec. Processed 10.00 million rows,101.00 MB(3.71 million rows/s.,37.52 MB/s.)
SELECT
data3,
COUNT(*)
FROM mysql('localhost','mikage','testdata','mikage','')
GROUP BY data3
-- 结果省略
100000 rows in set. Elapsed: 5.236 sec. Processed 10.00 million rows,138.89 MB(1.91 million rows/s.,26.52 MB/s.)
SELECT
data1,
uniqExact(data5)
FROM mysql('localhost','mikage','testdata','mikage','')
GROUP BY data1
┌─data1─┬─uniqExact(data5)─┐
│4│1811674│
│3│1812072│
│2│1812503│
│5│1814106│
│1│1813005│
└───────┴──────────────────┘
5 rows in set. Elapsed: 12.944 sec. Processed 10.00 million rows,198.89 MB(772.55 thousand rows/s.,15.37 MB/s.)
-- ClickHouse有一个函数来粗略计算一个唯一的数字,所以让我们来计算一下 。
在MySQL中,相当耗时的查询也可以在很短的时间内处理 。
重复统计时,最好将数据复制到ClickHouse一次 。
如果您复制它 , 后续查询将更快 。
建议暂时使用StripeLog引擎 。
如果您有一个主键,您可能还想要使用MergeTree表 。这是在ClickHouse中最常用的引擎 。
有必要用ORDER BY指定数据的排序顺序(即使有重复也没有问题) 。
我会尝试以前的查询 。以下是StripeLog引擎的测试结果 。
测试耗时总结如下:
我认为这个错误很大,因为它在VM环境下仅测试了一次
从左边开始为,(1)MySQL中的时间 (2) ClickHouse从MySQL读取和处理数据的时间 (3) 在ClickHouse上处理复制数据的时间 。
执行查询MySQL处理时间 (秒)MySQL-ClickHouse处理时间 (秒)ClickHouse处理时间 (秒)
groupby(data1) 3.22 2.685 0.071
groupby(data2) 4.01 2.692 0.177
groupby(data3) 212.82 5.236 0.779
groupby(data1)+uniq(data5) 183.56 12.944 1.725
groupby(data1)+uniq(data5)概算 (无此功能) 6.026 0.285
当引用MySQL数据时,如果没有对应于ClickHouse的类型,它似乎是String类型 。
没有相应的类型如Decimal类型,所以它也是String类型 。
如果你想把它作为一个数值,精度将会改变 , 但是似乎有必要在MySQL端保持Double类型 。
而且 , Date和DateTime类型在MySQL和ClickHouse之间的范围也是不同的 。

推荐阅读