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

Oracle 10g數(shù)據(jù)庫(kù)查找數(shù)據(jù)的方法總結(jié)

數(shù)據(jù)庫(kù) Oracle
本文我們主要介紹了Oracle 10g數(shù)據(jù)庫(kù)中查找數(shù)據(jù)的方法,了解了這些查找數(shù)據(jù)的方法,有助于我們讀懂執(zhí)行計(jì)劃,以便通過(guò)執(zhí)行計(jì)劃來(lái)優(yōu)化數(shù)據(jù)庫(kù)。希望能夠?qū)δ兴鶐椭?/div>

我們知道,Oracle 10g數(shù)據(jù)庫(kù)提供了更強(qiáng)大的查找數(shù)據(jù)的方法,提高了查詢數(shù)據(jù)庫(kù)的效率。那么它是如何查找數(shù)據(jù)的呢?查找數(shù)據(jù)的方式有幾種呢?本文我們就來(lái)介紹這一部分內(nèi)容,接下就讓我們來(lái)一起了解一下吧。

Oracle 10g 查找數(shù)據(jù)主要有以下方式:

全表掃描和ROWID查找數(shù)據(jù)

全表掃描(Full Table Scans ):

有時(shí)Oracle數(shù)據(jù)庫(kù)在評(píng)估***執(zhí)行計(jì)劃時(shí),當(dāng)去取大量數(shù)據(jù)時(shí),就會(huì)優(yōu)先考慮使用全表掃描,因?yàn)檫@時(shí)全表掃描是***的。一般取出的數(shù)據(jù)占表的數(shù)據(jù)5%--10%左右會(huì)發(fā)生表掃描,一般在OLTP系統(tǒng)中盡量避免表掃描。

為了更好的使用表掃描,提高效率,在oracle 中有好幾種分區(qū)方法,提高表掃描的效率,讓表按具體業(yè)務(wù)邏輯來(lái)分區(qū),盡量做到分區(qū)消除,減少表掃描的大小,提高性能。

ROWID查找數(shù)據(jù)(Table Access by ROWID 或R owid lookup ):

行ROWID是行數(shù)據(jù)在數(shù)據(jù)庫(kù)文件,數(shù)據(jù)塊和行在塊的具體位置,所以是Oracle最快的定位方法。

這種方法只能一次讀取一個(gè)IO,不會(huì)涉及多個(gè)IO。

目前通過(guò)索引查找,主要有5種索引查找方式:

  • 索引唯一查找(index unique scan )
  • 索引范圍查找 (index range scan )
  • 索引全部掃描 (index full scan )
  • 索引快速掃描 (index fast full scan )
  • 索引跳躍式查找 (index skip scan )

通過(guò)索引查找數(shù)據(jù)

索引唯一查找(index unique scan ):

當(dāng)查詢列是如果存在UNIQUE 或PRIMARY KEY 約束(它保證了語(yǔ)句只存取單行)的話,Oracle經(jīng)常實(shí)現(xiàn)唯一性掃描。此查找方法效率很高。

索引范圍查找 (index range scan ):

使用一個(gè)索引存取多行數(shù)據(jù),在唯一索引上使用索引范圍掃描的典型情況下是在謂詞(where限制條件)中使用了范圍操作符(如>、<、<>、>=、<=、between)。

索引全部掃描 (index full scan ):

全索引掃描。對(duì)查詢出的數(shù)據(jù)進(jìn)行排序,而且此時(shí)查詢出的數(shù)據(jù)都必須從索引中可以直接得到。同時(shí)order by排序的數(shù)據(jù)應(yīng)該是按索引的順序來(lái)讀取的。 如:explain plan   for   select empno,ename from big_emp order   by empno,ename。

索引快速掃描 (index fast full scan ):

與index full scan很類似,但是一個(gè)顯著的區(qū)別就是它不對(duì)查詢出的數(shù)據(jù)進(jìn)行排序,即數(shù)據(jù)不是以排序順序被返回 ,在這種存取方法中,可以使用多塊讀功能,也可以使用并行讀入,以便獲得***吞吐量與縮短執(zhí)行時(shí)間,索引快速全局掃描,不帶order by情況下常發(fā)生,如:explain plan  for  select empno,ename from big_emp。

索引跳躍式查找(index skip scan ):

where條件列是非索引的前導(dǎo)列情況下常發(fā)生。如下:

 

  1. create   index i_emp on emp(empno, ename);  
  2.  
  3. select   /* + index_ss(emp i_emp) */   job from emp where ename = ' SMITH ' ; 

 

總結(jié):

index full scan(索引全掃描):有排序 ,就是利用到了index的排序功能。原理:通過(guò)root根級(jí)----到中間級(jí)---葉級(jí)。

index fast full scan (索引快速掃描):無(wú)排序, 就可以利用多塊讀取方式,提高查詢速度,因?yàn)閿?shù)據(jù)要求是無(wú)序的。即可以使用多塊查詢,取出的數(shù)據(jù)就是數(shù)據(jù)存放的順序。

當(dāng)進(jìn)行index full scan的時(shí)候oracle定位到索引的root block,然后到branch block(如果有的話),再定位到***個(gè)leaf block, 然后根據(jù)leaf block的雙向鏈表順序讀取。它所讀取的塊都是有順序的,也是經(jīng)過(guò)排序的。

而index fast full scan則不同,它是從段頭開(kāi)始,讀取包含位圖塊,root block,所有的branch block, leaf block,讀取的順序完全有物理存儲(chǔ)位置決定,并采取多塊讀,每次讀取db_file_multiblock_read_count個(gè)。

關(guān)于Oracle 10g查找數(shù)據(jù)的方式就介紹這么多了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. Oracle數(shù)據(jù)庫(kù)如何創(chuàng)建DATABASE LINK?
  2. 管理員不能刪除其他用戶建立的DB Link的解決
  3. SQL Server數(shù)據(jù)庫(kù)對(duì)連接字符串的安全性處理
  4. Oracle數(shù)據(jù)庫(kù)對(duì)DDL語(yǔ)句和DML語(yǔ)句的事務(wù)管理
  5. Google Leveldb在Linux下的編譯及在C++中的應(yīng)用
責(zé)任編輯:趙鵬 來(lái)源: 火魔網(wǎng)
相關(guān)推薦

2009-11-19 15:57:34

Oracle 10g數(shù)

2010-04-12 13:34:42

Oracle 10g

2010-02-03 16:16:49

Linux Oracl

2011-03-29 09:56:48

Oracle數(shù)據(jù)庫(kù)10SQL

2011-03-29 10:09:41

Oracle 10g虛擬數(shù)據(jù)庫(kù)

2010-04-16 15:57:54

Oracle 10g

2011-08-23 18:04:16

Oracle 10g數(shù)據(jù)泵

2011-08-09 13:14:37

Oracle 10g數(shù)據(jù)庫(kù)閃回

2010-09-17 09:39:31

Oracle 10g

2010-04-07 09:39:18

Oracle 10G

2010-04-13 10:07:19

Oracle 10G

2009-01-20 23:13:24

Oracle 10G數(shù)據(jù)庫(kù)

2011-08-30 15:57:15

Oracle 10gUNDO_RETENT

2011-04-12 10:09:33

Oracle數(shù)據(jù)庫(kù)關(guān)閉

2010-04-13 09:58:52

Oracle 10G

2010-02-22 14:03:59

2010-04-09 15:59:24

Oracle 10g

2011-08-17 13:37:27

Windows7卸載Oracle 10

2010-05-05 15:52:36

Oracle 10G

2010-04-28 10:45:24

Oracle10g
點(diǎn)贊
收藏

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