国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關(guān)注微信公眾號

通過創(chuàng)建物化視圖來提高查詢速度
2007-11-01   賽迪網(wǎng)技術(shù)社區(qū)

也許,你現(xiàn)在正在為等待你的查詢返回結(jié)果而感到身心憔悴?有可能你已經(jīng)為增強(qiáng)索引和調(diào)優(yōu)SQL而感到疲憊不堪,但仍然不能提高查詢性能?那么,你是否已經(jīng)考慮創(chuàng)建物化視圖?有了物化視圖,那些過去需要數(shù)小時(shí)運(yùn)行的報(bào)告可以在幾分鐘內(nèi)完成。物化視圖可以包括聯(lián)接(join)和集合(aggregate),它提供了一種儲存預(yù)計(jì)算結(jié)果的方法。

在執(zhí)行一個(gè)查詢時(shí),優(yōu)化器會(huì)判定訪問物化視圖或數(shù)據(jù)駐留的基礎(chǔ)表是否更快一些。如果優(yōu)化器判定查詢物化視圖是更好的解決方案,那么優(yōu)化器會(huì)在一個(gè)被稱為“查詢改寫”(query rewrite)的過程中改寫SQL查詢。在這個(gè)過程中,不需要對任何SQL或應(yīng)用程序代碼進(jìn)行修改,所以任何利用SQL訪問數(shù)據(jù)庫的應(yīng)用程序或特定查詢工具都可得益于使用物化視圖。當(dāng)為計(jì)算結(jié)果而需要訪問的數(shù)據(jù)數(shù)量遠(yuǎn)大于結(jié)果(如集合)的大小時(shí),最適合使用查詢改寫,但是它也可被用于加速昂貴的聯(lián)接或規(guī)劃。

本文首先介紹了優(yōu)化器可以執(zhí)行的查詢改寫類型。然后,它討論了幫助確定創(chuàng)建最佳物化視圖集的工具,使優(yōu)化器能夠改寫多個(gè)查詢。利用這些工具創(chuàng)建的物化視圖在其基礎(chǔ)數(shù)據(jù)發(fā)生變化時(shí)還可以快速刷新。如果你不知道創(chuàng)建一個(gè)物化視圖、一個(gè)索引或同時(shí)創(chuàng)建兩者哪種更好,那么在Oracle數(shù)據(jù)庫10g中引入的SQL Access Advisor可以通過分析給定的工作負(fù)荷幫助你做出決定。

查詢改寫類型

可能有許多類型的查詢改寫;當(dāng)物化視圖的定義查詢與查詢的文本完全匹配時(shí),就發(fā)生最簡單和最顯著類型的查詢改寫。但是,當(dāng)相同物化視圖可用于相應(yīng)多個(gè)查詢時(shí),就可以實(shí)現(xiàn)查詢改寫的最大好處。現(xiàn)在,我們將舉例說明一些Oracle優(yōu)化器使用的規(guī)則,以確定它是否將使用物化視圖來響應(yīng)。

對于本文中的示例,可以考慮將一個(gè)星形模式中的PURCHASES表看作事實(shí)表(fact table),其范圍由time_key劃分。維度表(dimension table)--TIME、PRODUCT和CUSTOMERS--包含主鍵 time_key、product_id和cust_id。在PURCHASES表中有引用各個(gè)維度表的外鍵約束。

考慮一下清單 1中所創(chuàng)建的物化視圖,該視圖按月按product_id計(jì)算銷售總額和銷售總次數(shù)。注意:對于用于查詢改寫的物化視圖,必須有ENABLE QUERY REWRITE子句。還有,初始化參數(shù)QUERY_REWRITE_ENABLED必須被設(shè)置為TRUE。

代碼清單 1:創(chuàng)建月銷售物化視圖

  CREATE MATERIALIZED VIEW monthly_sales_mv
  ENABLE QUERY REWRITE
  AS
  
  SELECT t.month, p.product_id, SUM(ps.purchase_price) as sum_of_sales,
  COUNT (ps.purchase_price) as total_sales
  
  FROM time t, product p, purchases ps
  WHERE t.time_key = ps.time_key AND
  
  ps.product_id = p.product_id
  GROUP BY t.month, p.product_id;

集合計(jì)算

在本文的示例中,我們將說明物化視圖的查詢并顯示由EXPLAIN PLAN得到的執(zhí)行計(jì)劃。清單 2中的查詢要求按月和按產(chǎn)品的平均采購價(jià)格。優(yōu)化器可以使用物化視圖monthly_sales_mv,利用SUM和COUNT集合計(jì)算平均采購價(jià)格。這個(gè)示例說明了一種叫做“集合計(jì)算”的技術(shù)。

代碼清單 2:獲得平均(AVG)采購價(jià)格

  
  SELECT t.month, p.product_id, AVG(ps.purchase_price) as avg_sales
  FROM time t, product p, purchases ps
  WHERE t.time_key = ps.time_key AND
  
  ps.product_id = p.product_id
  GROUP BY t.month, p.product_id;
  
  Id  Operation           Name
  
  ________________________________________________
  SELECT STATEMENT
  MAT_VIEW REWRITE ACCESS FULL      MONTHLY_SALES_MV

Joinback

Joinback技術(shù)非常有用,因?yàn)樗试S當(dāng)物化視圖中沒有列時(shí)進(jìn)行查詢改寫。清單 3中的查詢要求按月和按產(chǎn)品類別的銷售總額,而該物化視圖中并沒有product.category列。然而,產(chǎn)品表的主鍵product_id列則位于物化視圖中。因此,優(yōu)化器可以將物化視圖與產(chǎn)品表聯(lián)接起來以得到產(chǎn)品類別。

代碼清單 3:通過joinback獲得銷售總額

 
  SELECT t.month, p.category, 
    SUM(ps.purchase_price) as sum_of_sales
  
  FROM time t, product p, purchases ps
  WHERE t.time_key = ps.time_key AND
  ps.product_id = p.product_id
  
  GROUP BY t.month, p.category;
  
  Id  Operation           Name
  __________________________________________________
  
  0  SELECT STATEMENT
  1   SORT GROUP BY
  2   HASH JOIN
  3    TABLE ACCESS FULL      PRODUCT
  
  4    MAT_VIEW REWRITE ACCESS FULL MONTHLY_SALES_MV

使用維度進(jìn)行查詢改寫

在一個(gè)使用維度建模技巧設(shè)計(jì)的典型數(shù)據(jù)倉庫中,數(shù)據(jù)中存在著著名的“層次關(guān)系”。例如,在時(shí)間層次中,“天”積累成“月”,“月”又積累成“年”。在Oracle數(shù)據(jù)庫中,可以使用CREATE DIMENSION語句創(chuàng)建一個(gè)叫做“DIEMNSION”的對象,向優(yōu)化器聲明這種關(guān)系。維度對象是一個(gè)描述性對象,除了其元數(shù)據(jù)外,它不占用空間。使用DIMENSION對象聲明的關(guān)系據(jù)說是可信的。Oracle不會(huì)驗(yàn)證這一關(guān)系對于你的數(shù)據(jù)是否一定成立,它只是假設(shè)數(shù)據(jù)庫管理員已經(jīng)判定這些關(guān)系是正確的。可信信息的其他示例是使用NOVALIDATE RELY標(biāo)記的約束及注冊為物化視圖的先存表。

對于采用可信信息(包括維度)的查詢改寫,初始化參數(shù)QUERY_ REWRITE_INTEGRITY必須被設(shè)置為TRUSTED,如下所示:

ALTER SESSION SET query_rewrite_integrity = TRUSTED;

例如,假設(shè)有一個(gè)時(shí)間維度,其聲明如下:

 
  CREATE DIMENSION time_dim
  LEVEL time_key IS time.time_key
  LEVEL month IS time.month
  LEVEL quarter IS time.quarter
  LEVEL year IS time.year
  HIERARCHY calendar_rollup (
  time_key CHILD OF
  month  CHILD OF
  quarter CHILD OF
  year
  )
  
  ATTRIBUTE time_key determines (day_of_week, holiday)
  ATTRIBUTE month  determines (month_name);

現(xiàn)在,如果具有清單 4中要求按年的銷售額的查詢,你仍然可以使用monthly_sales_mv物化視圖,因?yàn)榫S度對象中的HIERARCHY子句告訴Oracle數(shù)據(jù)庫月銷售額可以積累成年銷售額。它利用前面描述的joinback技巧由物化視圖中的“月”列得到“年”列的值。

代碼清單 4:通過joinback和HIERARCHY獲得銷售總額

  SELECT t.year, p.category, SUM(ps.purchase_price) as sum_of_sales
  FROM time t, product p, purchases ps
  WHERE t.time_key = ps.time_key AND
  
  ps.product_id = p.product_id
  GROUP BY t.year, p.category;
  
  Id  Operation            Name
  
  __________________________________________________
  0  SELECT STATEMENT
  1   SORT GROUP BY
  2   HASH JOIN
  
  3    HASH JOIN
  
  4    VIEW
  5     SORT UNIQUE
  6     TABLE ACCESS FULL     TIME
  7    MAT_VIEW REWRITE ACCESS FULL MONTHLY_SALES_MV
  8    TABLE ACCESS FULL       PRODUCT

維度的ATTRIBUTE子句指明了一對一關(guān)系。例如,你可以判定從time_key開始是一周中的哪一天。假設(shè)你希望得到每年1月份的銷售總額:你仍然可以使用清單 5中所示的monthly_sales_mv物化視圖。注意該查詢的WHERE子句如何具有一個(gè)在物化視圖中沒有出現(xiàn)的選擇條件。

代碼清單 5:通過joinback和ATTRIBUTE獲得銷售總額

  
  SELECT t.year, p.category, SUM(ps.purchase_price) as sum_of_sales
  FROM time t, product p, purchases ps
  WHERE t.time_key = ps.time_key AND
  
  ps.product_id = p.product_id AND
  t.month_name = 'January'
  
  GROUP BY t.year, p.category;
  
  Id  Operation            Name
  __________________________________________________
  0  SELECT STATEMENT
  1   SORT GROUP BY
  
  2   HASH JOIN
  
  3    HASH JOIN
  4    VIEW
  5     SORT UNIQUE
  6     TABLE ACCESS FULL     TIME
  7    MAT_VIEW REWRITE ACCESS FULL MONTHLY_SALES_MV
  8   TABLE ACCESS FULL       PRODUCT

如果優(yōu)化器并未如期改寫一個(gè)查詢,你可以使用DBMS_MVIEW .EXPLAIN_REWRITE 過程來診斷此問題。注釋:這一特性出現(xiàn)在Oracle9i數(shù)據(jù)庫及以后的版本中。

熱詞搜索:

上一篇:ASP連接11種數(shù)據(jù)庫語法集錦
下一篇:識別系統(tǒng)的非法進(jìn)程及殺滅

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
亚洲天堂网中文字| 久久精品国产99| 日韩电影免费在线| 国产成人99久久亚洲综合精品| 欧美羞羞免费网站| 久久精品男人的天堂| 天天色图综合网| 99精品久久免费看蜜臀剧情介绍| 欧美精品一区二区三区在线播放| 亚洲综合色丁香婷婷六月图片| 激情六月婷婷久久| 欧美久久久一区| 综合自拍亚洲综合图不卡区| 国产乱人伦偷精品视频免下载| 欧美久久一区二区| 亚洲人成网站影音先锋播放| 国产精品一区二区不卡| 欧美一区二区三区视频免费| 亚洲一区电影777| 91日韩在线专区| 国产精品美女视频| 国产超碰在线一区| 欧美大片在线观看| 天天色天天操综合| 欧美日韩中字一区| 亚洲一区二区三区中文字幕 | 欧美日韩视频不卡| 国产精品久久久久影院亚瑟| 国产精品一区二区黑丝 | 欧美少妇性性性| 亚洲欧美日韩国产综合在线| 成人综合激情网| 国产午夜精品福利| 高清国产午夜精品久久久久久| 日韩天堂在线观看| 蜜桃av一区二区三区| 日韩视频不卡中文| 日韩av在线免费观看不卡| 欧美猛男gaygay网站| 亚洲第一成人在线| 91精品久久久久久久99蜜桃 | 3d成人h动漫网站入口| 亚洲444eee在线观看| 欧美日韩国产三级| 麻豆一区二区三| 国产校园另类小说区| 国产成人精品免费视频网站| 国产香蕉久久精品综合网| 成人av动漫在线| 亚洲欧美日韩在线播放| 在线观看国产精品网站| 日韩主播视频在线| 欧美成人一区二区三区片免费| 加勒比av一区二区| 亚洲女人****多毛耸耸8| 91麻豆免费视频| 爽爽淫人综合网网站| 精品国产污网站| jiyouzz国产精品久久| 亚洲精品国产视频| 日韩女优制服丝袜电影| 国产99久久久久久免费看农村| 欧美激情一区二区三区蜜桃视频 | 国产精品一区二区男女羞羞无遮挡| 久久久久久久网| 91啪亚洲精品| 日本成人在线看| 国产精品三级av| 欧美一区二区视频网站| 国产一区二区三区香蕉| 综合分类小说区另类春色亚洲小说欧美| 欧美在线啊v一区| 狠狠色丁香九九婷婷综合五月| 亚洲色图制服丝袜| 日韩亚洲电影在线| 91麻豆国产福利在线观看| 青青草97国产精品免费观看| 国产精品网站一区| 欧美一区二区在线免费观看| 不卡视频一二三四| 奇米777欧美一区二区| 中文字幕佐山爱一区二区免费| 日韩欧美精品在线视频| 色婷婷久久99综合精品jk白丝| 美女在线一区二区| 亚洲免费观看高清| 国产欧美视频一区二区| 9191成人精品久久| 色偷偷88欧美精品久久久| 九九精品一区二区| 亚洲一区二区精品视频| 国产精品国产精品国产专区不片 | 欧美日韩一区二区在线观看视频| 精品无人区卡一卡二卡三乱码免费卡| 亚洲视频图片小说| 日本一区二区三区免费乱视频| 日韩欧美黄色影院| 欧美日韩免费高清一区色橹橹 | 中文字幕成人在线观看| 91精品国产福利在线观看| eeuss国产一区二区三区| 国产91在线观看| 狠狠网亚洲精品| 免费观看成人av| 日本色综合中文字幕| 亚洲国产一二三| 一区二区三区av电影| 亚洲精品免费在线| 亚洲日本一区二区三区| 国产日韩精品视频一区| 亚洲精品一区二区三区蜜桃下载 | 国产亚洲婷婷免费| 精品国产制服丝袜高跟| 欧美一级片免费看| 久久夜色精品一区| 欧美一区二区日韩| 日韩一级欧美一级| 精品成人一区二区| 久久在线观看免费| 国产欧美日韩不卡| 国产精品青草综合久久久久99| 国产精品你懂的| 中文字幕色av一区二区三区| 日韩毛片精品高清免费| 国产精品成人网| 亚洲国产裸拍裸体视频在线观看乱了 | 在线观看一区二区视频| 欧美亚洲国产bt| 日韩一级二级三级精品视频| 5月丁香婷婷综合| 欧美高清激情brazzers| 丰满岳乱妇一区二区三区| 国产成人免费在线观看不卡| 9i在线看片成人免费| 国产成都精品91一区二区三| 91免费观看国产| 丁香桃色午夜亚洲一区二区三区| www.爱久久.com| 在线免费亚洲电影| 欧美日韩精品一区二区三区| 7777精品伊人久久久大香线蕉完整版| 欧美在线看片a免费观看| 在线播放国产精品二区一二区四区| 97精品久久久久中文字幕| 欧美乱妇一区二区三区不卡视频| 日韩西西人体444www| 欧美日韩久久不卡| 欧美电视剧在线观看完整版| 日韩一区二区三区在线视频| 中文字幕av在线一区二区三区| 亚洲码国产岛国毛片在线| 亚洲网友自拍偷拍| 国产美女视频91| jlzzjlzz国产精品久久| 制服丝袜亚洲播放| 2019国产精品| 亚洲午夜在线电影| 国产精品小仙女| 91蝌蚪porny成人天涯| 91精品国产综合久久精品app| 欧美一区二区视频观看视频| 国产精品天天摸av网| 一区二区三区欧美激情| 国产一区美女在线| 97久久超碰国产精品电影| 欧美视频日韩视频| 中文字幕国产精品一区二区| 亚洲一区二区三区中文字幕在线| 国产91露脸合集magnet| 色88888久久久久久影院野外| 亚洲欧美色图小说| 韩国视频一区二区| 欧美曰成人黄网| 亚洲人吸女人奶水| 免费观看30秒视频久久| 欧美巨大另类极品videosbest | 欧美视频三区在线播放| 国产精品国产三级国产a| 午夜精品久久久久久不卡8050| 本田岬高潮一区二区三区| 91久久一区二区| 亚洲天堂网中文字| 国产成人99久久亚洲综合精品| 欧美日韩二区三区| 亚洲女人****多毛耸耸8| 九九九久久久精品| 日韩欧美亚洲国产另类| 亚洲欧美日韩国产综合在线| 国产精品亚洲综合一区在线观看| 欧美大胆人体bbbb| 亚洲一二三区在线观看| 欧美综合在线视频| 欧美大片日本大片免费观看| 首页欧美精品中文字幕| 欧美日韩国产系列| 亚洲色图在线视频| 91视频观看视频| 中文字幕日韩av资源站| 99re这里都是精品| 亚洲日本欧美天堂|