基于成本的优化器
火花SQL可以使用一个基于成本的优化器(CBO)来提高查询计划。这是特别有用的查询与多个连接。为此收集表和列统计信息是至关重要的,保持最新。
验证查询计划
有几种方法可以验证查询计划。
解释
命令
检查如果计划使用统计数据,使用SQL命令
砖运行时7。x,上图:解释
如果统计数据丢失,那么查询计划可能不是最优的。
= =优化逻辑计划= =总(s_store_sk),(s_store_sk,数(1)作为数(1)l),统计数据(sizeInBytes=20.0B,rowCount=1,提示=没有一个)+ -项目(s_store_sk),统计数据(sizeInBytes=18.5MB,rowCount=1.62 e + 6,提示=没有一个)+ -加入内心的,(d_date_sk=ss_sold_date_sk),统计数据(sizeInBytes=30.8MB,rowCount=1.62 e + 6,提示=没有一个):- - - - - -项目(ss_sold_date_sk,s_store_sk),统计数据(sizeInBytes=39.1GB,rowCount=2.63 e + 9,提示=没有一个):+ -加入内心的,(s_store_sk=ss_store_sk),统计数据(sizeInBytes=48.9GB,rowCount=2.63 e + 9,提示=没有一个)::- - - - - -项目(ss_store_sk,ss_sold_date_sk),统计数据(sizeInBytes=39.1GB,rowCount=2.63 e + 9,提示=没有一个)::+ -过滤器(isnotnull(ss_store_sk)& &isnotnull(ss_sold_date_sk)),统计数据(sizeInBytes=39.1GB,rowCount=2.63 e + 9,提示=没有一个)::+ -关系(ss_store_sk,ss_sold_date_sk]拼花,统计数据(sizeInBytes=134.6GB,rowCount=2.88 e + 9,提示=没有一个):+ -项目(s_store_sk),统计数据(sizeInBytes=11.7KB,rowCount=1.00 e + 3,提示=没有一个):+ -过滤器isnotnull(s_store_sk),统计数据(sizeInBytes=11.7KB,rowCount=1.00 e + 3,提示=没有一个):+ -关系(s_store_sk]拼花,统计数据(sizeInBytes=88.0KB,rowCount=1.00 e + 3,提示=没有一个)+ -项目(d_date_sk),统计数据(sizeInBytes=12.0B,rowCount=1,提示=没有一个)+ -过滤器((((isnotnull(d_year)& &isnotnull(d_date))& &(d_year=2000年))& &(d_date=2000年- - - - - -12- - - - - -31日))& &isnotnull(d_date_sk)),统计数据(sizeInBytes=38.0B,rowCount=1,提示=没有一个)+ -关系(d_date_sk,d_date,d_year]拼花,统计数据(sizeInBytes=1786.7KB,rowCount=7.30 e + 4,提示=没有一个)
重要的
的rowCount
统计查询与多个连接尤为重要。如果rowCount
丢失,这意味着没有足够的信息来计算(也就是说,一些需要列没有数据)。