当要插入的数据的可能类别已知并且比较短小(比如操作系统的名称、浏览器厂商等信息)时,我们建议使用枚举或数值类型可以提高性能。如果数据形式不确定(比如搜索查询、URL等),那就还是用字符串类型吧。 第二个原因是数据集包含了年、季度、月、本月第几日、本周第几日等等冗余字段。实际上,一个航班日期(Flightdate)就够了。这么做可能是为了给那些处理日期函数不得劲儿的数据库系统提高查询性能而已。 Clickhouse中处理DateTime字段的函数是经过优化的,所以这种冗余是不需要的。反正有了Clickhouse这种列式数据库,妈妈再也不用担心表内列数太多了,想要多少就要多少,大几百列都是小case。(料理数据的家庭主妇们用过之后都说:得劲儿!) 查询样本数据集 下面是一些对测试数据的查询示例。 2015年最受欢迎的目的地 SELECTOriginCityName, DestCityName,count(*) ASflights, bar(flights, 0, 20000, 40) FROMontime WHEREYear= 2015GROUPBYOriginCityName, DestCityName ORDERBYflights DESCLIMIT20 最受欢迎的出发城市 SELECTOriginCityName, count(*) ASflightsFROMontime GROUPBYOriginCityName ORDERBYflights DESCLIMIT20 目的地最多的出发城市 SELECTOriginCityName, uniq(Dest) ASuFROMontime GROUPBYOriginCityName ORDERBYu DESCLIMIT20 周内各天的航班延误 SELECTDayOfWeek, count() ASc, avg(DepDelay > 60) ASdelaysFROMontime GROUPBYDayOfWeekORDERBYDayOfWeek 最常延误1小时及以上的出发城市 SELECTOriginCityName, count() ASc, avg(DepDelay > 60) ASdelaysFROMontime GROUPBYOriginCityName HAVING c> 100000 ORDERBYdelays DESC LIMIT20 最长飞行时间 SELECTOriginCityName, DestCityName, count(*) ASflights, avg(AirTime) ASdurationFROMontime GROUPBYOriginCityName, DestCityName ORDERBYdurationDESC LIMIT20 (责任编辑:本港台直播) |