數據庫作業19:第九章: 關係查詢處理和查詢優化 課後習題

B:佔用的塊數;Br,Bs分別代表R,S佔用的塊數;
Frs,Mrs分別是連接選擇率,存放連接結果因子表示每塊可存放的結果元組數
在這裏插入圖片描述
2、假設關係R(A,B)]和S(B,C,D)情況如下:R有20000個元組,S有1200個元組,一個塊能裝40個R的元組,能裝30個S的元組,估算下列操作需要多少次磁盤塊讀寫。
(1)R上沒有索引,

select * from R;

只在R上查詢時:20000/40=500(塊);

(2)R中A爲主碼,A有三層B+樹索引
B+樹圖文詳解,這篇文章將B+樹用戶簡單易懂的方式解釋,利於更好的複習B+樹的相關知識。

select * from R where A=10;

選擇條件是“碼=值”,採用該表主索引,如果是B+樹,層數爲L,需要存取B+樹中從根結點到葉結點L塊,加上基本表中該元組所在的一塊,cost=L+1
3+1=4(塊)

(3)嵌套循環連接RSR \Join S;
一個塊可以裝40個R的元組,30個S的元組,但是不知道在內存中分別要存放多少塊的R元組和多少塊的S元組。只知道外層循環讀多少遍,不知道內層循環,所以無法進行估算。

(4)排序合併連接RSR \Join S,區分R與S在B屬性上已經有序和無序兩種情況。
有序:由於表已經有序了,R和S 都只需要掃描一遍即可。20000/40+1200/30=540.
無序:需要提前將表排序,所以執行時間需要加上對兩個表的排序時間。
540+(2*540)+(2 * 540 * log2540\log_2 540

3、對學生-課程數據庫,查詢信息系學生選修了的所有課程名稱。

SELECT Cname
FROM Student,Course,SC
WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno AND Student.Sdept='IS';

試畫出用關係代數表示的語法樹,並用關係代數表達式優化算法對原始的語法樹進行優化處理,畫出優化後的標準語法樹。
語法樹:
在這裏插入圖片描述
關係代數語法樹:
在這裏插入圖片描述
優化後的關係代數語法樹:
在這裏插入圖片描述
4、對於下面的數據庫模式:
Teacher(Tno\underline{Tno},Tname,Tage,Tsex);
Department(Dno\underline{Dno},Dname,Tno);
Work(Tno\underline{Tno},Dno,Year,Salary);
假設Teacher的Tno屬性,Department的Dno屬性以及Work的Year屬性上有B+樹索引,說明下列查詢語句的一種較優的處理方法。
(1)

select * from Teacher where Tsex='女';

在Tsex上沒有索引,採用全表掃描方法。
(2)

select * from Department where Dno<301;

B+樹索引。
(3)

select * from Work where Year<>2000;

<>操作法表示的是不等於,與!=等效。
B+樹索引。按照條件查找,則會有大塊數據 滿足或不滿足條件,就可以不用在判別了,直接輸出。
(4)

select * from Work where Year>2000 and Salary<5000;

B+樹索引。按照Year索引後,再判斷Salary是否滿足條件。
(5)

select * from Work where Year<2000 or Salary<5000;

全表掃描方法。
Salary上沒有索引,只能全表掃描。

5、對於題4 的數據庫模式有如下查詢:

select Tname
from Teacher,Department,Work
where Teacher.Tno=Work.Tno and Department .Dno=Work.Dno and Department.Dname='計算機系' and Salary>5000.

畫出語法樹以及用關係代數表示的語法樹,並對關係代數語法樹進行優化,畫出優化後的語法樹。
語法樹:
在這裏插入圖片描述

關係代數表示的語法樹:
在這裏插入圖片描述
優化後的關係代數語法樹:
在這裏插入圖片描述

B+樹的特徵:
1.有k個子樹的中間節點包含有k個元素(B樹中是k-1個元素),每個元素不保存數據,只用來索引,所有數據都保存在葉子節點。
2.所有的葉子結點中包含了全部元素的信息,及指向含這些元素記錄的指針,且葉子結點本身依關鍵字的大小自小而大順序鏈接。
3.所有的中間節點元素都同時存在於子節點,在子節點元素中是最大(或最小)元素。
B+樹的優勢:
1.單一節點存儲更多的元素,使得查詢的IO次數更少。
2.所有查詢都要查找到葉子節點,查詢性能穩定。
3.所有葉子節點形成有序鏈表,便於範圍查詢。

這次做題複習了一下以前B+樹的相關知識,要是不復習的話,都快忘光了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章