有好多時(shí)候,我們常聽別人說(shuō)大表在前,小表在后,包括現(xiàn)在好多百度出來(lái)的靠前的答案都有說(shuō)數(shù)據(jù)庫(kù)是從右到左加載的,所以from語(yǔ)句最后關(guān)聯(lián)的那張表會(huì)先被處理。如果三表交叉,就選擇交叉表來(lái)作為基礎(chǔ)表。等等一些結(jié)論,但是這些真的正確么?我就回家做了一個(gè)小的驗(yàn)證,來(lái)看一看到底是怎么一回事。(博主作實(shí)驗(yàn)用的是Oracle,但是不代表只是Oracle是這樣的原理,現(xiàn)在大部分的關(guān)系型數(shù)據(jù)庫(kù)都是一樣的)

  首先我們來(lái)執(zhí)行一下以下的sql語(yǔ)句,來(lái)看一下執(zhí)行計(jì)劃。看一看到底是怎么樣的。

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

1 drop table tab_big; --刪除原有big表2 drop table tab_small;3 create table tab_big  as select * from dba_objects where rownum<=30000;  --創(chuàng)建表,并且插入記錄4 create table tab_small  as select * from dba_objects where rownum<=10;5 set autotrace traceonly --開啟執(zhí)行計(jì)劃和統(tǒng)計(jì)信息6 set linesize 10007 set timing on 8 select count(*) from tab_big,tab_small;  
9 select count(*) from tab_small,tab_big;

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

  OK,完事后咱們來(lái)看一看,到底表的順序到底是否會(huì)影響到數(shù)據(jù)庫(kù)的執(zhí)行效率,我們來(lái)看一下”select count(*) from tab_big,tab_small“和”

網(wǎng)友評(píng)論