執行查詢語句之前需要執行一些查詢檢查任務,提高**的健壯性。
安全性檢查,檢查執行查詢的使用者許可權是否滿足執行查詢的要求
完整性初步檢查,檢查所要查詢的條件是否滿足資料的型別要求。
檢查完成之後會將資料庫語句轉換為對應的語法樹。
選擇操作的實現演算法
選擇操作有多種實現方式,例如全表掃瞄法,索引法,雜湊法等等。
全表掃瞄法比較適合體較小的表,掃瞄起來代價不會太高,或者是對於那些要選取表中大部分元素的查詢操作,全表掃瞄要比使用索引和雜湊更加廉價,因為沒有查詢或者計算雜湊下標的代價。
索引法或者是雜湊法,適合選擇查詢的屬性列上有有索引,先通過索引找到對應的元組的主碼,或者是通過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 水平拆分 如果表的資料量增長特變塊,索引帶來的效能優化可能達到...