第25章数据仓库与决策支持资料.pptVIP

  • 3
  • 0
  • 约1.24万字
  • 约 57页
  • 2017-05-16 发布于湖北
  • 举报
25.3.2 连接索引 例1:Customer(custid)和Purchases(rid)通过属性custid进行联接 创建集合C,P C—表示Customers中custid为C的记录 P—表示Purchases中rid为P的记录 两个记录满足连接条件可以进行连接 例2:星型模式:事实表总是要和若干个维表进行连接 Sales, Products, Times, Locations连接 连接索引S, P, t, l S,P,t,l是满足连接条件的元组 问题:连接索引的数目会增长很快 25.4 SQL:1999中的查询 *下面的查询使用传统的SQL-92很难表达: ①查询每种产品的月销售额的变化的百分比; (√) ②查询总销售额最高的5种产品; (√) ③跟踪n天的平均销售额变化;(对于每一天 算出前后n天的平均日销售额) (×) SQL:1999的窗口子句,可以表达上面查询 The WINDOW Clause The WINDOW Clause SELECT L.state, T.month, AVG(S.sales) OVER W AS movavg FROM Sales S, Times T, Location L WHERE S.timeid=T.timeid AND S.locid=L.locid WINDOW W AS(PARTITION BY L.state ORDER BY T.month RANGE BETWEEN INTERUAL ‘1’ MONTH PRECEDING AND INTERUAL ‘1’ MONTH FOLLOWING) 处理FROM和WHERE子句生成临时表Temp Temp按照PARTITION BY子句被分区(和GROUP BY相似,但是分区中每一行都产生一个结果行,不是每个分区产生一个结果行) 分个分区中的行是根据T.month排序的 为分区中的每一行建立窗口边界。(上例:每一行的窗口包含该行本身和所有的month值加1和减1之间的行。即month值为6月的行的窗口包含所有month值为5,6,7的行) 计算分区中每行的聚集函数,首先要确定它的窗口,然后计算窗口中行的指定的聚集函数。 考虑某个州的某一行数据,给出在特定时间某种特定商品的销售额;该行的窗口包括所有描述某个州中本月、前一个月和下一个月的销售额的行,movage是这段时间的销售额的平均值 25.5 快速得到查询结果 应用趋势: ①查询处理的重点-尽快给用户提供最初的部分查询结果,或者是最好的部分查询结果 ②对用户提交的复杂查询,希望能尽快得到近似的查询结果,然后再进一步精练处理直到最后得到精确查询结果。 25.5.1 得到前N个结果的查询 得到销售额排在前面的少量商品 传统方法-先对所有商品按销售额排序,按这个顺序返回结果; 如果商品种类很多,代价太高 DBMS允许用户指定需要多少条结果记录,据此优化执行 SELECT P.pid, P.name, S.sales FROM Sales S, Products P WHERE S.pid=P.pid AND S.locid=1 AND S.timeid=3 ORDER BY S.sales DESC OPTIMIZE FOR 10 ROWS 25.5.1 得到前N个结果的查询 假设能根据Sales上的直方图得到销售额的分布情况,然后选定只有排在前十位的商品的销售额才能达到的值C。增加选择条件salesC SELECT P.pid, P.name, S.sales FROM Sales S, Products P WHERE S.pid=P.pid AND S.locid=1 AND S.timeid=3 AND S.salesC ORDER BY S.sales DESC 效果取决于是否能精确估计出域值C 25.5.2 联机聚集(online aggregation) 按州得到平均销售额的查询 SELECT L.state, A

文档评论(0)

1亿VIP精品文档

相关文档