TPC-H的22条查询语句分析

好久不见. 提交于 2019-11-28 05:36:41

本文链接:https://blog.csdn.net/fly2nn/article/details/61924604
使用TPC-H进行性能测试,需要有很多工作配合才能获得较高性能,如建立索引,表数据的合理分布(使用表空间和聚簇技术)等。    本文从查询优化技术的角度,对TPC-H的22条查询语句和主流数据库执行每条语句对应的查询执行计划进行分析,目的在于了解各个主流数据库的查询优化技术,以TPC-H实例进一步掌握查询优化技术,对比主流数据库的实现情况对查询优化技术融会贯通。


1、Q1价格统计报告查询

Q1语句是查询lineItems的一个定价总结报告。在单个表lineitem上查询某个时间段内,对已经付款的、已经运送的等各类商品进行统计,包括业务量的计费、发货、折扣、税、平均价格等信息。Q1语句的特点是:带有分组、排序、聚集操作并存的单表查询操作。这个查询会导致表上的数据有95%到97%行被读取到。Q1的查询语句如下:

Q1的查询语句如下:

 

2、Q2最小代价供货商查询

Q2语句查询获得最小代价的供货商。得到给定的区域内,对于指定的零件(某一类型和大小的零件),哪个供应者能以最低的价格供应它,就可以选择哪个供应者来订货。Q2语句的特点是:带有排序、聚集操作、子查询并存的多表查询操作。查询语句没有从语法上限制返回多少条元组,但是TPC-H标准规定,查询结果只返回前100行(通常依赖于应用程序实现)。

Q2的查询语句如下:

 

3、Q3运送优先级查询

Q3语句查询得到收入在前10位的尚未运送的订单。在指定的日期之前还没有运送的订单中具有最大收入的订单的运送优先级(订单按照收入的降序排序)和潜在的收入(潜在的收入为l_extendedprice * (1-l_discount)的和)。
Q3语句的特点是:带有分组、排序、聚集操作并存的三表查询操作。查询语句没有从语法上限制返回多少条元组,但是TPC-H标准规定,查询结果只返回前10行(通常依赖于应用程序实现)。
Q3的查询语句如下:

 

4、Q4订单优先级查询

Q4语句查询得到订单优先级统计值。计算给定的某三个月的订单的数量,在每个订单中至少有一行由顾客在它的提交日期之后收到。

Q4语句的特点是:带有分组、排序、聚集操作、子查询并存的单表查询操作。子查询是相关子查询。

Q4的查询语句如下:

 

 

5、Q5某地区供货商为公司带来的收入查询

Q5语句查询得到通过某个地区零件供货商而获得的收入(收入按sum(l_extendedprice * (1 -l_discount))计算)统计信息。可用于决定在给定的区域是否需要建立一个当地分配中心。
Q5语句的特点是:带有分组、排序、聚集操作、子查询并存的多表连接查询操作。
Q5的查询语句如下:

 

6、Q6预测收入变化查询

Q6语句查询得到某一年中通过变换折扣带来的增量收入。这是典型的“what-if”判断,用来寻找增加收入的途径。预测收入变化查询考虑了指定的一年中折扣在“DISCOUNT-0.01”和“DISCOUNT+0.01”之间的已运送的所有订单,求解把l_quantity小于quantity的订单的折扣消除之后总收入增加的数量。

Q6语句的特点是:带有聚集操作的单表查询操作。查询语句使用了BETWEEN-AND操作符,有的数据库可以对BETWEEN-AND进行优化。
Q6的查询语句如下:

 

7、Q7货运盈利情况查询

Q7语句是查询从供货商国家与销售商品的国家之间通过销售获利情况的查询。此查询确定在两国之间货运商品的量用以帮助重新谈判货运合同。
Q7语句的特点是:带有分组、排序、聚集、子查询操作并存的多表查询操作。子查询的父层查询不存在其他查询对象,是格式相对简单的子查询。
Q7的查询语句如下:

 

 

8、Q8国家市场份额查询

Q8语句是查询在过去的两年中一个给定零件类型在某国某地区市场份额的变化情况。

Q8语句的特点是:带有分组、排序、聚集、子查询操作并存的查询操作。子查询的父层查询不存在其他查询对象,是格式相对简单的子查询,但子查询自身是多表连接的查询。

Q8的查询语句如下:

 

9、Q9产品类型利润估量查询

Q9语句是查询每个国家每一年所有被定购的零件在一年中的总利润。
Q9语句的特点是:带有分组、排序、聚集、子查询操作并存的查询操作。子查询的父层查询不存在其他查询对象,是格式相对简单的子查询,但子查询自身是多表连接的查询。子查询中使用了LIKE操作符,有的查询优化器不支持对LIKE操作符进行优化。
Q9的查询语句如下:

 

10、Q10货运存在问题的查询

Q10语句是查询每个国家在某时刻起的三个月内货运存在问题的客户和造成的损失。
Q10语句的特点是:带有分组、排序、聚集操作并存的多表连接查询操作。查询语句没有从语法上限制返回多少条元组,但是TPC-H标准规定,查询结果只返回前10行(通常依赖于应用程序实现)。
Q10的查询语句如下:

 

11、Q11库存价值查询

Q11语句是查询库存中某个国家供应的零件的价值。

Q11语句的特点是:带有分组、排序、聚集、子查询操作并存的多表连接查询操作。子查询位于分组操作的HAVING条件中。

Q11的查询语句如下:

 

 

12、Q12货运模式和订单优先级查询

Q12语句查询获得货运模式和订单优先级。可以帮助决策:选择便宜的货运模式是否会导致消费者更多的在合同日期之后收到货物,而对紧急优先命令产生负面影响。

Q12语句的特点是:带有分组、排序、聚集操作并存的两表连接查询操作。

Q12的查询语句如下:

 

13、Q13消费者订单数量查询

Q13语句查询获得消费者的订单数量,包括过去和现在都没有订单记录的消费者。

Q13语句的特点是:带有分组、排序、聚集、子查询、左外连接操作并存的查询操作。

Q13的查询语句如下:

 

14、Q14销效果查询

Q14语句查询获得某一个月的收入中有多大的百分比是来自促销零件。用以监视促销带来的市场反应。

Q14语句的特点是:带有分组、排序、聚集、子查询、左外连接操作并存的查询操作。

Q14的查询语句如下:

 

15、Q15头等供货商查询

Q15语句查询获得某段时间内为总收入贡献最多的供货商(排名第一)的信息。可用以决定对哪些头等供货商给予奖励、给予更多订单、给予特别认证、给予鼓舞等激励。
Q15语句的特点是:带有分排序、聚集、聚集子查询操作并存的普通表与视图的连接操作。
Q15的查询语句如下:

 

 

16、Q16零件/供货商关系查询

Q16语句查询获得能够以指定的贡献条件供应零件的供货商数量。可用于决定在订单量大,任务紧急时,是否有充足的供货商。
Q16语句的特点是:带有分组、排序、聚集、去重、NOT IN子查询操作并存的两表连接操作。
Q16的查询语句如下:

 

17、Q17小订单收入查询

Q17语句查询获得比平均供货量的百分之二十还低的小批量订单。对于指定品牌和指定包装类型的零件,决定在一个七年数据库的所有订单中这些订单零件的平均项目数量(过去的和未决的)。如果这些零件中少于平均数20%的订单不再被接纳,那平均一年会损失多少呢?所以此查询可用于计算出如果没有没有小量订单,平均年收入将损失多少(因为大量商品的货运,将降低管理费用)。Q17语句的特点是:带有聚集、聚集子查询操作并存的两表连接操作。Q17的查询语句如下:

 

 

18. Q18大订单顾客查询

Q18语句查询获得比指定供货量大的供货商信息。可用于决定在订单量大,任务紧急时,验证否有充足的供货商。Q18语句的特点是:带有分组、排序、聚集、IN子查询操作并存的三表连接操作。查询语句没有从语法上限制返回多少条元组,但是TPC-H标准规定,查询结果只返回前100行(通常依赖于应用程序实现)。Q18的查询语句如下:

 

 

19、Q19折扣收入查询

Q19语句查询得到对一些空运或人工运输零件三个不同种类的所有订单的总折扣收入。零件的选择考虑特定品牌、包装和尺寸范围。本查询是用数据挖掘工具产生格式化代码的一个例子。Q19语句的特点是:带有分组、排序、聚集、IN子查询操作并存的三表连接操作。Q19的查询语句如下:

 

20、Q20供货商竞争力查询

Q20语句查询确定在某一年内,找出指定国家的能对某一零件商品提供更有竞争力价格的供货货。所谓更有竞争力的供货商,是指那些零件有过剩的供货商,超过供或商在某一年中货运给定国的某一零件的50%则为过剩。Q20语句的特点是:带有排序、聚集、IN子查询、普通子查询操作并存的两表连接操作。Q20的查询语句如下:

 

 

21、Q21不能按时交货供货商查询

Q21语句查询获得不能及时交货的供货商。Q21语句的特点是:带有分组、排序、聚集、EXISTS子查询、NOT EXISTS子查询操作并存的四表连接操作。查询语句没有从语法上限制返回多少条元组,但是TPC-H标准规定,查询结果只返回前100行(通常依赖于应用程序实现)。Q21的查询语句如下:

 

22、Q22全球销售机会查询

Q22语句查询获得消费者可能购买的地理分布。本查询计算在指定的国家,比平均水平更持肯定态度但还没下七年订单的消费者数量。能反应出普通消费者的的态度,即购买意向。Q22语句的特点是:带有分组、排序、聚集、EXISTS子查询、NOT EXISTS子查询操作并存的四表连接操作。Q22的查询语句如下:

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!