資料庫概論 (六)查詢及優化

2022-02-24 19:57:55 字數 1001 閱讀 4344

執行查詢語句之前需要執行一些查詢檢查任務,提高**的健壯性。

安全性檢查,檢查執行查詢的使用者許可權是否滿足執行查詢的要求

完整性初步檢查,檢查所要查詢的條件是否滿足資料的型別要求。

檢查完成之後會將資料庫語句轉換為對應的語法樹。

選擇操作的實現演算法

選擇操作有多種實現方式,例如全表掃瞄法,索引法,雜湊法等等。

全表掃瞄法比較適合體較小的表,掃瞄起來代價不會太高,或者是對於那些要選取表中大部分元素的查詢操作,全表掃瞄要比使用索引和雜湊更加廉價,因為沒有查詢或者計算雜湊下標的代價。

索引法或者是雜湊法,適合選擇查詢的屬性列上有有索引,先通過索引找到對應的元組的主碼,或者是通過hash雜湊函式算出元組的主碼,再去取得資料。

連線操作的實現演算法

select * from student, sc where student.sno=sc.sno
實現上述兩個表的連線通常有這麼幾個辦法:

巢狀迴圈法

類似於裡外雙迴圈,將student表中的元組取出,將其sno屬性與sc中的所有元組的sno屬性進行對比,如果相等就進行連線,然後將連線的結果加入到結果集中,所以這裡的代價為兩表的大小之積:\(o(mn)\)。

排序合併法

適合連線的諸表已經排好序的情況

排序-合併連線方法的步驟:

如果連線的表沒有排好序,先對student表和sc表按連線屬性sno排序;

取student表中第乙個sno,依次掃瞄sc表中具有相同sno的元組;

當掃瞄到sno不相同的第乙個sc元組時,返回student表掃瞄它的下乙個元組,再掃瞄sc表中具有相同sno的元組,把它們連線起來;

重複上述步驟直到 student 表掃瞄完

索引連線法

在sc表上建立屬性sno的索引,如果原來沒有該索引;

對student中每乙個元組,由sno值通過sc的索引查詢相應的sc元組

把這些sc元組和student元組連線起來, 迴圈執行2,3,直到student表中的元組處理完為止

《資料庫系統概論》 9 查詢處理與查詢優化

查詢分析 對查詢語句進行掃瞄 詞法分析和語法分析。查詢檢查 對合法的查詢語句進行語義檢查,安全性和初步完整性檢查 查詢優化 選擇乙個高效執行的查詢處理策略。按照優化的層次可將查詢優化分為代數優化和物理優化 查詢執行 依據優化器得到的執行策略,由 生成器生成執行這個查詢計畫的 然後加以執行,回送查詢結...

資料庫查詢優化

方法 1 1.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。步驟閱讀 22.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num is...

資料庫查詢優化

本記載,用於保留面對大資料量時,查詢速率待優化,只記錄要點,具體如何操作,還需查詢 1 索引優化 通過建立合理高效的索引,提高查詢的速度.2 sql優化 根據需求,組織優化sql語句,使查詢效率達到最優,在很多情況下要考慮索引的作用 3 水平拆分 如果表的資料量增長特變塊,索引帶來的效能優化可能達到...