Driving Table(驅(qū)動(dòng)表):
該表又稱為外層表(OUTER TABLE)。這個(gè)概念用于嵌套與HASH連接中。如果該row source返回較多的行數(shù)據(jù),則對(duì)所有的后續(xù)操作有負(fù)面影響。注意此處雖然翻譯為驅(qū)動(dòng)表,但實(shí)際上翻譯為驅(qū)動(dòng)行源(driving row source)更為確切。一般說(shuō)來(lái),是應(yīng)用查詢的限制條件后,返回較少行源的表作為驅(qū)動(dòng)表,所以如果一個(gè)大表在WHERE條件有有限制條件(如等值限 制),則該大表作為驅(qū)動(dòng)表也是合適的,所以并不是只有較小的表可以作為驅(qū)動(dòng)表,正確說(shuō)法應(yīng)該為應(yīng)用查詢的限制條件后,返回較少行源的表作為驅(qū)動(dòng)表。在執(zhí)行 計(jì)劃中,應(yīng)該為靠上的那個(gè)row source
Probed Table(被探查表):
該表又稱為內(nèi)層表(INNER TABLE)。在我們從驅(qū)動(dòng)表中得到具體一行的數(shù)據(jù)后,在該表中尋找符合連接條件的行。所以該表應(yīng)當(dāng)為大表(實(shí)際上應(yīng)該為返回較大row source的表)且相應(yīng)的列上應(yīng)該有索引。在我們后面的描述中,一般將該表稱為連接操作的row source
組合索引(concatenated index):
由多個(gè)列構(gòu)成的索引,如create index idx_emp on emp(col1, col2, col3, ……),則我們稱idx_emp索引為組合索引。在組合索引中有一個(gè)重要的概念:引導(dǎo)列(leading column),在上面的例子中,col1列為引導(dǎo)列。當(dāng)我們進(jìn)行查詢時(shí)可以使用”where col1 = ? ”,也可以使用”where col1 = ? and col2 = ?”,這樣的限制條件都會(huì)使用索引,但是”where col2 = ? ”查詢就不會(huì)使用該索引。所以限制條件中包含先導(dǎo)列時(shí),該限制條件才會(huì)使用該組合索引
Join表的幾種方式:
1.(Sort Merge Join (SMJ) )
a.首先:生成驅(qū)動(dòng)表的結(jié)果集。然后排序
b.生成被探查表的結(jié)果集,然后排序。
c.然后兩個(gè)表進(jìn)行連接。
2.(Nested Loops (NL) )
兩層循環(huán),里邊的表循環(huán)一次,然后去外邊的表去查,得到結(jié)果行,然后放入結(jié)果集。
所以較小的表要做為內(nèi)層的表,即驅(qū)動(dòng)表
他還有另一個(gè)優(yōu)點(diǎn):可以返回已經(jīng)連接的結(jié)果集,不必等到所有的結(jié)果集都返回,才返回結(jié)構(gòu)。
3.(Hash Join)
較小的表用來(lái)構(gòu)建 row sourcehash 和 tablebitmap。
外邊的表是用來(lái)被hash的,并與第一個(gè)表生成的hashtable 進(jìn)行連接。
索引掃描的方式:
索引唯一掃描(index unique scan)
select empno,ename from emp where empno=10;
empno是主鍵或者是unique .
索引范圍掃描(index range scan)
empno>59
索引全掃描(index full scan)
select empno, ename from big_emp order by empno,ename
是排著序的。
索引快速掃描(index fast full scan
select empno,ename from big_emp; 不排序。
原文地址:http://weiruan85.javaeye.com/blog/288374
該表又稱為外層表(OUTER TABLE)。這個(gè)概念用于嵌套與HASH連接中。如果該row source返回較多的行數(shù)據(jù),則對(duì)所有的后續(xù)操作有負(fù)面影響。注意此處雖然翻譯為驅(qū)動(dòng)表,但實(shí)際上翻譯為驅(qū)動(dòng)行源(driving row source)更為確切。一般說(shuō)來(lái),是應(yīng)用查詢的限制條件后,返回較少行源的表作為驅(qū)動(dòng)表,所以如果一個(gè)大表在WHERE條件有有限制條件(如等值限 制),則該大表作為驅(qū)動(dòng)表也是合適的,所以并不是只有較小的表可以作為驅(qū)動(dòng)表,正確說(shuō)法應(yīng)該為應(yīng)用查詢的限制條件后,返回較少行源的表作為驅(qū)動(dòng)表。在執(zhí)行 計(jì)劃中,應(yīng)該為靠上的那個(gè)row source
Probed Table(被探查表):
該表又稱為內(nèi)層表(INNER TABLE)。在我們從驅(qū)動(dòng)表中得到具體一行的數(shù)據(jù)后,在該表中尋找符合連接條件的行。所以該表應(yīng)當(dāng)為大表(實(shí)際上應(yīng)該為返回較大row source的表)且相應(yīng)的列上應(yīng)該有索引。在我們后面的描述中,一般將該表稱為連接操作的row source
組合索引(concatenated index):
由多個(gè)列構(gòu)成的索引,如create index idx_emp on emp(col1, col2, col3, ……),則我們稱idx_emp索引為組合索引。在組合索引中有一個(gè)重要的概念:引導(dǎo)列(leading column),在上面的例子中,col1列為引導(dǎo)列。當(dāng)我們進(jìn)行查詢時(shí)可以使用”where col1 = ? ”,也可以使用”where col1 = ? and col2 = ?”,這樣的限制條件都會(huì)使用索引,但是”where col2 = ? ”查詢就不會(huì)使用該索引。所以限制條件中包含先導(dǎo)列時(shí),該限制條件才會(huì)使用該組合索引
Join表的幾種方式:
1.(Sort Merge Join (SMJ) )
a.首先:生成驅(qū)動(dòng)表的結(jié)果集。然后排序
b.生成被探查表的結(jié)果集,然后排序。
c.然后兩個(gè)表進(jìn)行連接。
2.(Nested Loops (NL) )
兩層循環(huán),里邊的表循環(huán)一次,然后去外邊的表去查,得到結(jié)果行,然后放入結(jié)果集。
所以較小的表要做為內(nèi)層的表,即驅(qū)動(dòng)表
他還有另一個(gè)優(yōu)點(diǎn):可以返回已經(jīng)連接的結(jié)果集,不必等到所有的結(jié)果集都返回,才返回結(jié)構(gòu)。
3.(Hash Join)
較小的表用來(lái)構(gòu)建 row sourcehash 和 tablebitmap。
外邊的表是用來(lái)被hash的,并與第一個(gè)表生成的hashtable 進(jìn)行連接。
索引掃描的方式:
索引唯一掃描(index unique scan)
select empno,ename from emp where empno=10;
empno是主鍵或者是unique .
索引范圍掃描(index range scan)
empno>59
索引全掃描(index full scan)
select empno, ename from big_emp order by empno,ename
是排著序的。
索引快速掃描(index fast full scan
select empno,ename from big_emp; 不排序。
原文地址:http://weiruan85.javaeye.com/blog/288374