从成本、时间和处理的Angular 来看,哪一个最适合使用。这里etl\u batch\u date是表的分区列。
1.查询-当运行表大小:9.77 mb时,此查询将处理607.7 kb
SELECT count(*) from demo
WHERE etlbatchid = '20200003094244327' and etl_batch_date='2020-06-03
查询-当运行表大小为9.77mb时,此查询将处理427.6KB
从演示中选择count(*),其中etlbatchid='20200003094244327'
另外,当您编写第二个查询时,它是否从每个分区读取数据?
您的宝贵意见将不胜感激。
1条答案
按热度按时间vlju58qv1#
经验法则:总是使用分区列来过滤数据。
使用此查询:
每
datehour
如果添加到过滤器中,将查询额外的千兆字节数据。那是因为:按datehour筛选意味着读取datehour列。所以这使得查询遍历更多的数据。
但由于datehour列是分区列,因此它只扫描当天的数据。
现在,如果我添加另一个过滤器:
处理的数据更少!
那是因为
wiki
是主聚类列。所以试着总是使用分区和集群-即使对于较小的表,结果看起来也不那么直观。