自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

帶您了解Oracle FBI索引

數(shù)據(jù)庫(kù) Oracle
Oracle8i增加了一個(gè)新特性,即function-based index索引類型(簡(jiǎn)稱為FBI)。下文對(duì)FBI索引作了詳盡的闡述說(shuō)明,供您參考學(xué)習(xí)。

Oracle FBI索引是Oracle8i的新特性,下面就為您詳細(xì)介紹Oracle FBI索引的概念及使用,如果您對(duì)Oracle FBI索引方面感興趣的話,不妨一看。

Oracle8i的很重要的一個(gè)新特性就是增加了function-based index這種索引類型(后面簡(jiǎn)稱為FBI)。有了這個(gè)特性后,Oracle DBA就可以在索引中使用函數(shù)或者表達(dá)式了。這些函數(shù)可以使Oracle自己的函數(shù),也可以使用戶自己的PL/SQL函數(shù)等。

DBA在SQL語(yǔ)句調(diào)優(yōu)的過(guò)程中遇到的一個(gè)很常見的問(wèn)題就是,如何優(yōu)化那些在WHERE子句中使用了函數(shù)的語(yǔ)句。因?yàn)樵谝郧埃赪HERE子句中使用函數(shù)會(huì)使在這個(gè)表上創(chuàng)建的索引沒法利用,從而難以提高這個(gè)語(yǔ)句的性能。
例子:

使用基于成本的優(yōu)化器,索引為標(biāo)準(zhǔn)的B樹索引,建立在SURNAME列上。

  1. SQL>create index non_fbi on sale_contacts (surname);  
  2. SQL>analyze index non_fbi compute statistics;   
  3. SQL>:analyze table sale_contacts compute statistics;   
  4. SQL>SELECT count(*) FROM sale_contacts  
  5. WHERE UPPER(surname) = 'ELLISON';  
  6.  
  7. Execution Plan   
  8. ----------------------------------------------------------   
  9. 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=1 Bytes=17)   
  10. 1 0 SORT (AGGREGATE)   
  11. 2 1 TABLE ACCESS (FULL) OF 'SALES_CONTACTS' (Cost=3 Card=16 Bytes=272)   

從SQL*PLUS的autotrace產(chǎn)生的執(zhí)行路徑可以看到,雖然我們?cè)赪HERE子句中用到的SURNAME列上創(chuàng)建了索引,但是仍然執(zhí)行的是全表掃描。如果這張表很大的話,這回消耗大量的時(shí)間。
現(xiàn)在我們?cè)囍⒁粋€(gè)Oracle FBI索引:

  1. SQL>create index fbi on sale_contacts (UPPER(surname));  
  2. SQL>analyze index fbi compute statistics;  
  3. SQL>analyze table sale_contacts compute statistics;  
  4. SQL>SELECT count(*) FROM sale_contacts WHERE UPPER(surname) = 'ELLISON';   
  5. Execution Plan  
  6. ----------------------------------------------------------   
  7. 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=17)   
  8. 1 0 SORT (AGGREGATE)   
  9. 2 1 INDEX (RANGE SCAN) OF 'FBI' (NON-UNIQUE) (Cost=2 Card=381 Bytes=6477

從SQL*Plus返回的執(zhí)行計(jì)劃我們可以看到,這次,Oracle對(duì)表不再全表掃描,而是先掃描索引,因?yàn)閮?yōu)化器可以知道FBI索引得存在。
使用Oracle FBI索引所能夠帶來(lái)的性能提升取決于表的大小、表中重復(fù)記錄的量、在WHERE子句中使用的列等因素。
有一點(diǎn)需要清楚,Oracle FBI索引并不真正在索引里邊存儲(chǔ)了表達(dá)式的結(jié)果,而是使用了一個(gè)"表達(dá)樹"(expression tree)。
 

 

 

【編輯推薦】

詳解Windows下卸載Oracle數(shù)據(jù)庫(kù)

詳解如何將Oracle安裝為L(zhǎng)inux服務(wù)

詳解Oracle多種表連接方式

oracle中使用SQL遞歸語(yǔ)句的例子

初識(shí)Oracle裸設(shè)備二十問(wèn)

責(zé)任編輯:段燃 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-11-16 09:55:12

Oracle分區(qū)索引

2010-10-25 15:04:39

Oracle文本函數(shù)

2010-10-28 13:20:50

ORACLE reso

2010-10-29 15:37:51

Oracle物理結(jié)構(gòu)

2010-11-15 10:40:58

Oracle啟動(dòng)參數(shù)

2010-11-15 13:20:06

Oracle恢復(fù)結(jié)構(gòu)

2010-10-12 13:14:11

mysql索引類型

2010-10-26 11:55:21

Oracle OS備份

2010-10-27 16:22:07

Oracle層次查詢

2010-11-16 14:59:39

Oracle顯式游標(biāo)

2010-10-27 14:27:13

oracle查詢語(yǔ)句日

2010-10-25 15:20:23

Oracle數(shù)據(jù)轉(zhuǎn)換函

2010-10-27 14:57:24

Oracle查詢

2010-10-29 10:56:46

ORACLE用戶驗(yàn)證

2010-10-26 11:28:33

ORACLE運(yùn)行方式

2010-10-27 15:58:01

Oracle臨時(shí)表

2010-10-28 10:19:29

oracle權(quán)限管理

2010-10-29 14:57:12

Oracle歸檔模式

2010-11-02 11:30:09

DB2索引結(jié)構(gòu)

2010-11-22 11:09:00

MySQL索引類型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)