TPC-H系列---3---TPC-H的22条查询语句分析
2017-03-13 19:03
846 查看
使用TPC-H进行性能测试,需要有很多工作配合才能获得较高性能,如建立索引,表数据的合理分布(使用表空间和聚簇技术)等。
本文从查询优化技术的角度,对TPC-H的22条查询语句和主流数据库执行每条语句对应的查询执行计划进行分析,目的在于了解各个主流数据库的查询优化技术,以TPC-H实例进一步掌握查询优化技术,对比主流数据库的实现情况对查询优化技术融会贯通。
1. Q1,价格统计报告查询
Q1语句是查询lineItems的一个定价总结报告。在单个表lineitem上查询某个时间段内,对已经付款的、已经运送的等各类商品进行统计,包括业务量的计费、发货、折扣、税、平均价格等信息。
Q1语句的特点是:带有分组、排序、聚集操作并存的单表查询操作。这个查询会导致表上的数据有95%到97%行被读取到。
Q1的查询语句如下:
select
l_returnflag, //返回标志
l_linestatus,
sum(l_quantity) as sum_qty, //总的数量
sum(l_extendedprice) as sum_base_price, //聚集函数操作
sum(l_extendedprice * (1 - l_discount)) as sum_disc_price,
sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge,
avg(l_quantity) as avg_qty,
avg(l_extendedprice) as avg_price,
avg(l_discount) as avg_disc,
count(*) as count_order //每个分组所包含的行数
from
lineitem
where
l_shipdate <= date'1998-12-01' - interval '90' day //时间段是随机生成的
group by //分组操作
l_returnflag,
l_linestatus
order by //排序操作
l_returnflag,
l_linestatus;
2. Q2,最小代价供货商查询
Q2语句查询获得最小代价的供货商。得到给定的区域内,对于指定的零件(某一类型和大小的零件),哪个供应者能以最低的价格供应它,就可以选择哪个供应者来订货。
Q2语句的特点是:带有排序、聚集操作、子查询并存的多表查询操作。查询语句没有从语法上限制返回多少条元组,但是TPC-H标准规定,查询结果只返回前100行(通常依赖于应用程序实现)。
Q2的查询语句如下:
select
s_acctbal, s_name, n_name, p_partkey, p_mfgr, s_address, s_phone, s_comment /*查询供应者的帐户余额、名字、国家、零件的号码、生产者、供应者的地址、电话号码、备注信息 */
from
part, supplier, partsupp, nation, region //五表连接
where
p_partkey = ps_partkey
and s_suppkey = ps_suppkey
and p_size = [SIZE] //指定大小,在区间[1, 50]内随机选择
and p_type like '%[TYPE]' //指定类型,在TPC-H标准指定的范围内随机选择
and s_nationkey = n_nationkey
and n_regionkey = r_regionkey
and r_name = '[REGION]' //指定地区,在TPC-H标准指定的范围内随机选择
and ps_supplycost = ( //子查询
select
min(ps_supplycost) //聚集函数
from
partsupp, supplier, nation, region //与父查询的表有重叠
where
p_partkey = ps_partkey
and s_suppkey = ps_suppkey
and s_nationkey = n_nationkey
and n_regionkey = r_regionkey
and r_name = '[REGION]'
)
order by //排序
s_acctbal desc,
n_name,
s_name,
p_partkey;
本文从查询优化技术的角度,对TPC-H的22条查询语句和主流数据库执行每条语句对应的查询执行计划进行分析,目的在于了解各个主流数据库的查询优化技术,以TPC-H实例进一步掌握查询优化技术,对比主流数据库的实现情况对查询优化技术融会贯通。
1. Q1,价格统计报告查询
Q1语句是查询lineItems的一个定价总结报告。在单个表lineitem上查询某个时间段内,对已经付款的、已经运送的等各类商品进行统计,包括业务量的计费、发货、折扣、税、平均价格等信息。
Q1语句的特点是:带有分组、排序、聚集操作并存的单表查询操作。这个查询会导致表上的数据有95%到97%行被读取到。
Q1的查询语句如下:
select
l_returnflag, //返回标志
l_linestatus,
sum(l_quantity) as sum_qty, //总的数量
sum(l_extendedprice) as sum_base_price, //聚集函数操作
sum(l_extendedprice * (1 - l_discount)) as sum_disc_price,
sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge,
avg(l_quantity) as avg_qty,
avg(l_extendedprice) as avg_price,
avg(l_discount) as avg_disc,
count(*) as count_order //每个分组所包含的行数
from
lineitem
where
l_shipdate <= date'1998-12-01' - interval '90' day //时间段是随机生成的
group by //分组操作
l_returnflag,
l_linestatus
order by //排序操作
l_returnflag,
l_linestatus;
2. Q2,最小代价供货商查询
Q2语句查询获得最小代价的供货商。得到给定的区域内,对于指定的零件(某一类型和大小的零件),哪个供应者能以最低的价格供应它,就可以选择哪个供应者来订货。
Q2语句的特点是:带有排序、聚集操作、子查询并存的多表查询操作。查询语句没有从语法上限制返回多少条元组,但是TPC-H标准规定,查询结果只返回前100行(通常依赖于应用程序实现)。
Q2的查询语句如下:
select
s_acctbal, s_name, n_name, p_partkey, p_mfgr, s_address, s_phone, s_comment /*查询供应者的帐户余额、名字、国家、零件的号码、生产者、供应者的地址、电话号码、备注信息 */
from
part, supplier, partsupp, nation, region //五表连接
where
p_partkey = ps_partkey
and s_suppkey = ps_suppkey
and p_size = [SIZE] //指定大小,在区间[1, 50]内随机选择
and p_type like '%[TYPE]' //指定类型,在TPC-H标准指定的范围内随机选择
and s_nationkey = n_nationkey
and n_regionkey = r_regionkey
and r_name = '[REGION]' //指定地区,在TPC-H标准指定的范围内随机选择
and ps_supplycost = ( //子查询
select
min(ps_supplycost) //聚集函数
from
partsupp, supplier, nation, region //与父查询的表有重叠
where
p_partkey = ps_partkey
and s_suppkey = ps_suppkey
and s_nationkey = n_nationkey
and n_regionkey = r_regionkey
and r_name = '[REGION]'
)
order by //排序
s_acctbal desc,
n_name,
s_name,
p_partkey;
相关文章推荐
- TPC-H系列---5---TPC-H的22条查询语句分析(Q6--Q8)
- TPC-H系列---7---TPC-H的22条查询语句分析(Q13--Q15)
- TPC-H系列---4---TPC-H的22条查询语句分析
- TPC-H系列---6---TPC-H的22条查询语句分析(Q9--Q12)
- TPC-H系列---9---TPC-H的22条查询语句分析(Q19--Q22)
- TPC-H系列---8---TPC-H的22条查询语句分析(Q16--Q18)
- sql server08 查询优化系列 3-2 sql 查询性能分析
- Informix数据表结构分析资料整理之字段类型说明和查询SQL语句
- 简单查询语句的分析
- 分析查询语句使用索引的情况
- sql server08 查询优化系列 2系统性能分析
- Informix数据表结构分析资料整理之字段类型说明和查询SQL语句
- Informix数据表结构分析资料整理之字段类型说明和查询SQL语句
- ◆勇敢者论坛源代码分析系列(1)—数据查询
- sqlserver查询语句分析
- 如何使用SQLPLUS分析SQL语句(查询执行计划跟踪)
- 对于Oracle中分页排序查询语句执行效率的比较分析
- sql server性能分析--查询死锁和阻塞的sql语句
- 基于数据字典的通用查询系统(一)SQL语句的构成分析
- [SBO](转)SQL_查询语句(库龄分析报表)