sql Oracle 驅動表是什麼?

2021-08-28 03:44:55 字數 1236 閱讀 2544

1.什麼是驅動表?

通俗的講就是先從哪個表開始檢索啦,找到好的驅動表語句的優化就成功一半了

eg: select * from a,b where a.id = b.id and a.姓名 = '美格瑞恩' and b.性別 = '女';在a,b表同等數量級的情況下顯然用a表做為驅動表比較好因為姓名相對於性別來說可以過濾掉更多的資料,所以想辦法使你的執行計畫掃瞄a表先再通過nest loop與b表關連比較理想

2.rbo和cbo

rbo中一般情況下是from後最後一張是驅動表,cbo中輸出資料量最少的是驅動表!驅動表是基表,其他表是基於驅動表來巢狀。主要是調優時用的,考慮效能優化。

rbo - 1、 基於規則的優化方式(rule-based optimization,簡稱為rbo) 優化器 

cbo - 1、 基於代價的優化方式(cost-based optimization,簡稱為cbo) 優化器

如果你是學dba可能需要深入一些,如果你是技術開發,沒有必要了解這麼多。資料庫是哪種優化器不是開發人員所能決定的。

2.oracle如何選擇驅動表

rbo或者cbo沒有分析table的情況下,對於2個表的操作,from子句中,rbo選擇最右的表作為驅動表(一般也就是from 中最後的表作為驅動表 )。 所以 對於nested loops、hash join、sort merge join方式,驅動表選擇較小的表 (放在from 最右端),速度會更快; 存在主、外來鍵關係的表,由於主鍵由oracle自動建立索引,外來鍵上最好也建索引,以避免全表掃瞄 。 而對於3個或以上table連線查詢,對於from子句,rbo以從右到左的順序處理表連線,也就是from 子句最右端table作為驅動表。我們常說,驅動表一定是小表,指的是根據條件獲得的子集合一定要小,而不是說實體表本身一定要小,大表如果獲得的子集合小,一樣可以簡稱這個大表為驅動表。 ,最好選擇與其他表的主鍵字段進行比較,或者與已經索引的字段進行比較,這樣一來,就有意識地將業務需求的主表,作為驅動表處理了,oracle也會在選擇最優執行計畫時,比較容易的找到驅動表。如果where條件過於複雜,或者業務上獲得資訊的主表並不容易確定,我們可以根據業務的實際情況,評估關聯各表的資料量和資料增長量,並分析關鍵條件欄位的區分度,考慮在區分度高的字段,或者區分度高的組合欄位上建立索引,以最大限度的降低某個表的結果集,增加其作為驅動表的機會。

原文參考:

驅動程式是什麼

我目前所在的部門叫做驅動組,而做的東西本質上不是驅動程式來的.所在研發部門把串列埠通訊程式叫作驅動程式,我覺得不妥的,今天和同事們討論了一下.很多同事對驅動程式的概念感到模糊。其實公司裡的串列埠通訊程式只是乙個操作串列埠的應用程式,而驅動程式是由作業系統管理的,由作業系統呼叫的,有同事問我,什麼是應...

dual表是什麼表

dual是乙個虛擬表,用來構成select的語法規則,oracle保證dual裡面永遠只有一條記錄。我們可以用它來做很多事情,如下 1 檢視當前使用者,可以在 sql plus中執行下面語句 select user from dual 2 用來呼叫系統函式 select to char sysdat...

表空間是什麼

表空間實質是組織資料檔案的一種途徑,oracle就是通過表空間這個資料庫物件完成對資料的組織的。在將資料插入oracle資料庫之前,必須首先建立表空間,然後將資料插入表空間的乙個物件中。解釋資料庫 表空間 資料檔案 表 資料檔案的最好辦法就是想象乙個裝滿東西的櫃子。資料庫其實就是櫃子,櫃中的抽屜是表...