Microsoft PowerPoint - Ch10

Similar documents
Microsoft PowerPoint - Ch6

Microsoft PowerPoint - Ch7

國語 領域計畫表

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( ) SQL ( ) DB2 SQL DB2 DB2 SQL DB2 DB2 SQL DB2 ( DB2 ) DB2 DB2 DB2 SQL DB2 (1) SQL (2) S

untitled

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

目錄

1.3

幻灯片 1

上海地区进出口饲料和饲料添加剂经营单位备案名单


投影片 1


012

Title

Microsoft Word - DCS-5220_線上監視平台-說明手冊_1.00_T_.doc

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

untitled

謙卑的小巨人 文 / 林士涵 印製見證文集是父親在生病後就有的想法 目的是希望更多親朋好友能透 過這些見證認識主耶穌 一起享受屬耶穌那好得無比的生命 我的父親林進聰 民國 42 年 9 月 18 日生於台中縣大肚 鄉 退伍後輾轉來到工業技術研究院化工所上班 認識了他生 命中兩個最愛 信仰耶穌基督以及

Microsoft PowerPoint - 09.Android 程式設計-SQLite

untitled

菩提道次第廣論

繁 華 國 小 101 學 年 母 親 節 感 恩 惜 福 - 跳 蚤 市 場 暨 科 學 闖 關 遊 戲 親 子 活 動 實 施 計 畫 一 依 據 : 本 校 101 學 年 度 校 務 計 畫 及 行 事 曆 二 目 的 : 1. 培 養 學 生 感 恩 惜 物 知 福 惜 福 的 節 儉 觀

台 中 市 北 屯 區 東 山 里 橫 坑 9 林 志 明 巷 89-5 菜 豆 菜 大 漿 果 菜 豆 菜 大 漿 果 小 漿 果 核 果 柑 桔 無 陳 錦 生 新 竹 市 香 山 區


育儿小故事(四)

01

周口科~1

中山大学附属第五医院引进高层次人才实施办法

请示

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持


四 本 學 期 程 架 構 : (1) 學 活 流 程 與 策 略 視 聽 故 事 時 事 節 令 生 活 問 題 預 習 單 朗 讀 問 答 討 論 討 論 理 解 欣 賞 想 像 練 習 章 結 構 敘 寫 技 巧 修 辭 要 領 仿 作 造 字 原 理 字 義 釐 清 字 音 字 形 辨 析

43081.indb

78 云 芝 79 五 加 皮 80 五 味 子 81 五 倍 子 82 化 橘 红 83 升 麻 84 天 山 雪 莲 85 天 仙 子 86 天 仙 藤 87 天 冬 88 天 花 粉 89 天 竺 黄 90 天 南 星 91 天 麻 92 天 然 冰 片 ( 右 旋 龙 脑 ) 93 天 葵

工 造 价 15 邗 江 南 路 建 设 工 一 标 市 政 公 用 6000 中 机 环 建 集 团 有 限 公 胡 美 娟 16 邗 江 南 路 建 设 工 二 标 市 政 公 用 品 尊 国 际 花 园 1# 2# 3# 4# 7# 9# 10# 11# 楼 地 库 C 区 工



PowerPoint Presentation

四川省普通高等学校

第六章 SQL 進階查詢

外國人從事就業服務法第四十六條第一項第八款至第十一款工作資格及審查標準第二十二條附表五修正草案總說明

99下民主法治教育 法律常識測驗題庫

Microsoft PowerPoint - Lotus Domino 8 and DB2.ppt [相容模式]

Microsoft PowerPoint - 資料庫程式設計教材.pptx

PowerPoint Presentation

untitled

99710b43ZW.PDF

楊 泰 興 關 東 煮 1 魏 輔 雄 關 東 煮 8 黃 雅 萍 白 米 23 周 庭 淯 奶 粉 高 浚 翔 保 久 乳 3 箱 陳 先 生 貢 丸 林 淑 櫻 衣 物 呂 淑 芬 奶 粉 郁 涵 清 奶 粉 衣 物 物 資 塑 膠 袋 5 個 顏 兆 敏 王 文 伶 清 潔 棉 1 個 陳 語

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

Ch06_


Microsoft Word - A doc

<4D F736F F D20B8BDBCFE33B8C9BAB5D4D6BAA6B7E7CFD5C6C0B9C0D3EBB5F7BFD8B9D8BCFCBCBCCAF5D1D0BEBF2E646F6378>

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63>

Microsoft PowerPoint - Ch3

H 批发和零售业

untitled

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

Oracle Database 10g: SQL (OCE) 的第一堂課

支付宝2011年 IT资产与费用预算

プリント

untitled

如 來 明 妃

1

76 即 刻 開 悟 之 鑰 清 海 無 上 師 開 悟 者 的 求 道 過 程 是 最 吸 引 人 的, 尤 其 是 在 亙 古 聖 潔 的 喜 馬 拉 雅 山, 清 海 無 上 師 除 了 細 說 自 己 在 靈 山 的 修 道 狀 況, 更 介 紹 修 行 者 的 諸 多 趣 聞 自 古 以

ebook 96-16

User Group SMTP

Transcription:

第十章基本的查詢處理與最佳化 資料庫程式的執行 SQL 敘述的處理流程 SQL 查詢樹 基本關聯代數運算子的處理 SELECT 的處理方式和成本 外部排序的處理方式和成本 10-1 資料庫程式的執行 通常 SQL 的敘述都是由程式執行所產生, 但交由 DBMS 來處理 DBMS 看到的是一串 SQL 敘述 10-2 1

資料庫程式的部分程式碼 ' 建立資料庫連結物件 1 set conn = ServerCreateObject("ADODBConnection") ' 開啟資料庫連結 2 connopen "onlinedb" 3 query = "SELECT * FROM product" 4 Set rs = connexecute(query) 5 while not rseof 下達查詢並取得結果 一筆一筆取出結果 10-3 SQL 敘述的處理流程 10-4 2

練習 10-1 考慮圖 10-2, 如果第 4 行的 SQL 指令在檢查時發現錯誤, 會有什麼後果? Ans: 此時該 SQL 指令便不會執行, 也因此 rs 裡不會有值 所以不會執行 WHILE 迴圈 10-5 SQL 查詢樹 一顆 SQL 查詢樹是用來表達一種執行方案 每一葉節點記錄查詢所用到的每一資料表 每一中間節點記載處理的動作 標準的處理動作如關聯代數裡的運算子 SELECT name FROM Product, Author WHERE pname = ` 系統分析理論與實務 ' AND ProductpNo = AuthorpNo; π name ProductpNo = AuthorpNo σ pname = 系統分析理論與實務 Author Product 10-6 3

SQL 查詢樹 (Cont) 查詢樹的執行次序是由下而上 由左至右 上例的執行方式如下 Temp1=σ pname=' 系統分析理論與實務 ' (Product); Temp2= Temp1 Temp1pNo=AuthorpNo Author; Result= π name (Temp2); SQL 剖析器所產生的查詢樹是最簡單的查詢樹, 稱為初始查詢樹 查詢最佳化模組會將初始查詢樹轉換成較有效率的查詢樹 10-7 SQL 查詢樹 (Cont) 從 SQL 查詢句建立初始查詢 樹 FROM 子句裡的每一個資料表是一個葉節點 葉節點用集合乘法 ( 卡迪森乘積 ) 當中間節點兩兩串連起來 加上一個 SELECT(σ) 的中間節點, 以 WHERE 子句當作其運算 加上一個 PROJECT(π) 的根節點, 以 SELECT 子句當作其運算 SELECT name FROM Product, Author WHERE pname = 系統分析理論與實務 AND ProductpNo = AuthorpNo; 10-8 4

初始查詢樹 10-9 SQL 查詢樹 (Cont) 初始查詢樹最佳化的轉換步驟 將 SELECT 的動作往下移, 盡量接近葉節點 10-10 5

SQL 查詢樹 (Cont) 將條件較嚴格的 SELECT 中間節點盡量往左邊移 10-11 SQL 查詢樹 (Cont) 將相鄰的 中間節點和 σ 中間節點合併成一個 中間節點 10-12 6

SQL 查詢樹 (Cont) 將 PROJECT 的動作往下移, 盡量接近葉節點 10-13 練習 10-2 找出 黃三益 所瀏覽過單價超過 500 元的商品資訊的最佳化查詢 π pid, name, pname, unitprice π pid, name, pname, unitprice σ ProductunitPrice>500 AND ProductpNo=BrowsepNo AND BrowsemId = MembermId AND Membername =' 黃三益 ' σ B row sem Id = M em berm Id σ ProductpNo = BrowsepNo σ nam e = ' 黃三益 ' Member Member Product Browse σ ProductunitPrice > 500 Browse Product 10-14 7

π pid, name, pname, unitprice π pid, name, pname, unitprice σ ProductpNo = BrowsepNo ProductpNo = BrowsepNo BrowsemId = MembermId σ ProductunitPrice > 500 σ BrowsemId = MembermId σ ProductunitPrice > 500 Product Product σ name = ' 黃三益 ' Member Browse σ name = ' 黃三益 ' π pid, name, pname, unitprice Member Browse ProductpNo = BrowsepNo BrowsemId = MembermId π pno,pname,unitprice π mid,pid,name Product π pno,mid σ ProductunitPrice > 500 σ name = ' 黃三益 ' Browse Member 10-15 查詢成本的預估指標 查詢樹的每一中間節點, 實作的方式可能有數種, 到底該採取哪一種? 沒有哪一種處理方式必然可以得到比較有效率的運算 對於一個查詢句, 現代的 DBMS 於是採用成本預估 (Cost estimate) 的方式來決定該採取哪一種處理方式 查詢最佳化模組試圖計算出和比較它們的 成本 10-16 8

何謂運算成本 何謂成本 : 執行時間 硬碟的存取成本 大部分 DBMS 的瓶頸 CPU 的計算成本 主記憶體 DBMS 的瓶頸 網路的通訊成本 分散式 DBMS 的成本 佔大部分時間 10-17 資料表和索引的相關符號 資料表的相關數據 r: 資料表裡的記錄筆數 r Product = 100,000 b: 資料表所佔的資料頁數 b Product = 5000 bfr: 每一資料頁可容納幾筆記錄 r Product /b Product = bfr Product = 20 索引的相關數據 x:b + -tree 的層數 x unitprice = 3 bi1:b + -tree 裡葉節點的個數 bi1 unitprice = 500 d: 不同索引值的個數 d catalog = 100, d SEX = 2 參考下頁圖 9-6 10-18 9

n1 450 n2 n3 350 400 500 600 n4 n5 n6 n7 n8 n9 (300,<p3,3>) (350,<p15,3>) (400, <p9,2> ) (450,<p15,2> )(450,<p15,1>) (500,<p3,2>) (500,<p3,1>) (550, <p15,4> ) (600,<p3,4>) (700, <p9,1> ) P3 資料表 Product 第一頁 512 128 256 1024 'b30999, 資料庫理論與實務,500, Book' 'd11222, 任賢齊專輯三,300, CD' 'b20666, OLAP 進階,500, Book' P9 'b10234, 管理資訊,600, Book' 15 'b51111, 電子商務,700, Book' P15 'v00111, 英雄,400, DVD' NULL 'b40555, 系統分析,550, Book' 'd20777, 蔡依林,350, CD' 'v01888, 哈利波特,450, DVD' 'd03333,5566 專輯,450, CD 9 10-19 基本 SELECT 的處理方式 SELECT 條件裡只有單一屬性 σ catalog= Book Product σ unitprice>500 Product σ pno= b30999 Product 三種處理方式 (SL) 資料頁循序搜尋 (SI) 利用索引結構 ( 參考圖 9-6) (SIC) 利用群聚索引結構 10-20 10

假設有 unitprice 的群聚索引, 參考下頁圖 10-7 CREATE INDEX I3 ON Product(unitPrice) CLUSTER; 利用該索引結構來處理 σ unitprice>500 Product 非常有效率 利用該索引結構找到包含 unitprice>500 的資料頁指標 到該資料頁和以下資料頁找出所有記錄 10-21 10-22 11

SELECT 的選擇幅度 SELECT 的選擇幅度即是查詢結果的預估資料筆數, 以 s 表示 σ catalog= Book Product d catalog = 100,r Product = 100,000 s=r Product / d catalog = 1000 σ pno= b30999 Product s=1 σ unitprice > 500 Product s=r Product /2 = 50,000 10-23 練習 10-3 考慮圖 9-6 的索引結構, 要列出所有 unitprice>500 的 Product 記錄, 請問需造訪哪些索引頁? 會造訪哪些資料頁? Ans: 索引頁 :n1, n3, n8, n9 資料頁 :p15, p3, p9 10-24 12

練習 10-4 考慮圖 10-7 的索引結構, 要列出所有 unitprice>500 的 Product 記錄, 請問需造訪哪些索引頁? 會造訪哪些資料頁? Ans: 索引頁 :n1, n3, n8 資料頁 :p2, p3 10-25 複合 SELECT 的處理方式 SELECT 條件裡包括一個以上的基本子條件, 這些子條件用 AND 或 OR 連結起來 σ catalog= Book AND unitprice<500 Product σ catalog= Book OR unitprice<500 Product 有以下的四種作法 (SL): 資料頁循序搜尋 (SSI): 單一索引結構搜尋 ( 參考圖 9-6) (SMI): 多索引結構搜尋 (SCI): 複合索引結構搜尋 假設有一多屬性值索引 :(catalog, unitprice) 參考下頁圖 9-7 10-26 13

複合 SELECT 的處理方式 (Cont) CREATE INDEX I2 ON Product(catalog ASC, unitprice DESC); 'Book', 600 n1 n2 n3 'Book', 550 'Book', 500 'CD', 350 'DVD', 450 n4 n5 n6 n7 n8 n9 ( 'Book', 700, ) ( 'Book', 600, ) ('Book', 550, ) 'Book', 500, ) 'Book', 500, ) ( 'CD', 450, ) ( 'CD', 350, ) σ catalog= Book AND unitprice<500 Product ( 'CD', 300, ) ( 'DVD', 450, ) ( 'DVD', 400, ) 10-27 練習 10-5: 考慮圖 9-7 的 (catalog, unitprice) 索引結構, 要列出所有 catalog = `Book' AND unitprice=500 的 Product 記錄, 請問需造訪哪些索引頁? Ans: n1, n2, n6 10-28 14

SELECT 處理方式的成本推估 σ A=a R (SL) 資料頁循序搜尋 case 1: A 為 R 的關聯鍵 : ( 1+b R )/2 case 2: A 不為 R 的關聯鍵 : b R (SI) 利用索引結構搜尋 +s,a 上建有一 B + A -tree case 1: A 為 R 的關聯鍵 :x A +1 s A case 2: A 不為 R 的關聯鍵 :x A -1+ bi1 A +s rr A (SIC) 利用群聚索引結構搜尋,A 上有建置一群聚索引 s A x A + bfrr 10-29 範例一 : 假設 r Product = 100,000,b Product = 5000,bfr Product = 20,x pno =3, 計算 σ pno= b30999 Product 的成本如下 ( 請注意 pno 為 Product 關聯的主鍵 ) (SL): (1+b Product )/2 2500 (SI): x pno +1=3+1=4 (SIC): x pno +1=3+1=4 10-30 15

範例二 假設 r Product = 100,000,b Product = 5000 ( 因此 bfr Product = 20),x catalog =2,d catalog =100( 因此 s catalog = 1000),bI1 catalog =100, 計算 σ catalog= Book Product 的成本如下 : (SL): b Product =5000 s catalog (SI): x catalog -1 + bi1 catalog +s r catalog Product =2-1 +1+1000 =1002 scatalog (SIC): x catalog + =2+50=52 bfrproduct ( 假設 catalog 為群聚索引 ) 10-31 SELECT 處理方式的成本推估 (Cont) σ A>a R (SL) 資料頁循序搜尋 b R (SI) 利用索引結構搜尋 bi1 A r R x A 1 + + 2 2 (SIC) 利用群聚索引結構,A 上有建置一群聚索引 x A + b R 2 10-32 16

範例三 假設 r Product = 100,000,b Product = 5000 ( 因此 bfr Product = 20),x unitprice =3, bi1 unitprice =1000, 計算 σ unitprice > 500 Product 的成本如下 (SL): b Product =5000 r Product bi1 unitprice 2 (SI): x unitprice 1+ + 2 =2+500+50000=50502 (SIC): x unitprice + 為群聚索引 ) b Product 2 =3+2500=2503 ( 假設 unitprice 10-33 範例四 假設 r Product = 100,000,b Product = 5000( 因此 bfr Product = 20), 有三個索引 :catalog, unitprice, 和 (catalog, unitprice) x catalog =2,d catalog =100( 因此 s catalog = 1000),bI1 catalog =100,x unitprice =3, bi1 unitprice =1000, x catalog,unitprice =4,bI1 catalog,unitprice =2000, 這三個索引皆非群聚索引 計算 σ catalog= Book AND unitprice > 500 Product 的成本 (SL): b Product =5000 (SSI): 這裡有兩個索引可以使用 使用 catalog 索引 : 1002 ( 參考範例二 ) 使用 unitprice 索引 :50502 ( 參考範例三 ) 10-34 17

範例四 (Cont) (SMI): 根據 catalog 索引取得記錄指標共需花費成本 scatalog x catalog -1+ bi1 catalog =2 rproduct 根據 unitprice 索引取得記錄指標共需花費成本 x unitprice -1 + =2+500=502 2 取這些記錄指標的交集 可在上一步驟裡一併處理, 故成本為 0 Product 選擇幅度為 s catalog,unitprice = =500 總成本為 bi1 unitprice 2+502+0+500 = 1004 r d catalog 1 2 10-35 範例四 (Cont) (SCI): 由上述 (SMI) 的推論, 我們知道 s catalog,unitprice =50, 所以成本為 bi1 x catalog,unitprice -1+ =4-1 +10 +500=513 catalog,unitprice s catalog,unitprice r Product +s catalog,unitprice 10-36 18

練習 11-1 在範例四的 (SSI) 中, 利用 catalog 索引比利用 unitprice 索引的成本低許多, 你可以因此得到什麼結論嗎? Ans: 選擇幅度小的屬性之索引成本較低 以本例來說,catalog= Book 的選擇幅度為 1000, 而 unitprice>500 的選擇幅度為 50,000 10-37 外部排序的運算 有些查詢句要求結果要排序 SELECT * FROM Product ORDER BY unitprice; 排序也有助於某些查詢句的處理 ( 如下一章的 JOIN) 資料表裡的記錄是位於次記憶體 ( 硬碟 ) 我們需要的是能處理位於次記憶體裡記錄的排序演算法, 稱為外部排序法 10-38 19

外部排序的運算 (Cont) 類似 Merge Sort 先將所有的資料切成數塊, 每一塊都可放入主記憶體裡分別作排序 再將這些排序好的數塊資料作適當的合併 成本 假設主記憶體裡最多可容納 n B 個讀入的資料頁 資料被切成 b R /n B 個資料塊 假設 n B b R /n B 資料塊排序總成本 :2b R 資料塊合併總成本 : 2b R 總成本 :4b R 10-39 外部排序的運算 (Cont) 成本 假設 n B < b R /n B 資料塊排序總成本 :2b R 資料塊合併總成本 : 2bR log 總成本 :2b R + 2b R log b nb R nb b R 成本通常簡化成 K 2 b R log b R 10-40 20