欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle怎么倒序索引,oracle倒序查詢

oracle的索引有幾種

Oracle 提供了多種不同類型的索引以供使用。簡單地說, Oracle 中包括如下索引:

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名與空間、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、江州網(wǎng)站維護、網(wǎng)站推廣。

1、 B* 樹索引

這些是我所說的 “ 傳統(tǒng) “ 索引。到目前為止,這是 Oracle 和大多數(shù)其他數(shù)據(jù)庫中最常用的索引。 B* 樹的構(gòu)造類似于二叉樹,能根據(jù)鍵提供一行或一個行集的快速訪問,通常只需很少的讀操作就能找到正確的行。不過,需要注意重要的一點, ” B* 樹 “ 中的 ” B “ 不代表二叉( binary ),而代表平衡( b alanced )。B* 樹索引并不是一顆二叉樹,這一點在介紹如何在磁盤上物理地存儲 B* 樹時就會了解到。 B* 樹索引有以下子類型:

索引組織表( index organized table ):索引組織表以 B* 樹結(jié)構(gòu)存儲。堆表的數(shù)據(jù)行是以一種無組織的方式存儲的(只要有可用的空間,就可以放數(shù)據(jù)),而 IOT 與之不同, IOT 中的數(shù)據(jù)要按主鍵的順序存儲和排序。對應(yīng)用來說, IOT 表現(xiàn)得與 “ 常規(guī) “ 表并無二致;需要使用 SQL 來正確地訪問 IOT 。 IOT 對信息獲取、空間系統(tǒng)和 OLAP 應(yīng)用最為有用。 IOT 在上一章已經(jīng)詳細地討論過。

B*樹聚簇索引( B*tree cluster index )這些是傳統(tǒng) B* 樹索引的一個變體(只是稍有變化)。 B* 樹聚簇索引用于對聚簇鍵建立索引(見第 11. 章中 “ 索引聚簇表 “ 一節(jié)),所以這一章不再討論。在傳統(tǒng) B* 樹中 ,鍵都指向一行;而 B* 樹聚簇不同,一個聚簇鍵會指向一個塊,其中包含與這個聚簇鍵相關(guān)的多行。

降序索引( descending index ):降序索引允許數(shù)據(jù)在索引結(jié)構(gòu)中按 “ 從大到小 “ 的順序(降序)排序,而不是按 ” 從小到大 “ 的順序(升序)排序。我們會解釋為什么降序索引很重要,并說明降序索引如何工作。

反向鍵索引( reverse key index ):這也是 B* 樹索引,只不過鍵中的字節(jié)會 “ 反轉(zhuǎn) “ 。利用反向鍵索引,如果索引中填充的是遞增的值,索引條目在索引中可以得到更均勻的分布。例如,如果使用一個序列來生成主鍵,這個序列將生成諸如 987500 、 987501 、 987502 等值。這些值是順序的,所以倘若使用一 個傳統(tǒng)的 B* 樹索引,這些值就可能放在同一個右側(cè)塊上,這就加劇了對這一塊的競爭。利用反向鍵, Oracl e則會邏輯地對 205789 、 105789 、 005789 等建立索引。 Oracle 將數(shù)據(jù)放在索引中之前,將先 把所存儲數(shù)據(jù)的字節(jié)反轉(zhuǎn),這樣原來可能在索引中相鄰放置的值在字節(jié)反轉(zhuǎn)之后就會相距很遠。通過反轉(zhuǎn)字節(jié),對索引的插入就會分布到多個塊上。

2、 位圖索引( bitmap index )

在一顆 B* 樹中,通常索引條目和行之間存在一種一對一的關(guān)系:一個 索引條目就指向一行。而對于位圖索引,一個索引條目則使用一個位圖同時指向多行。位圖索引適用于高度重復(fù)而且通常只讀的數(shù)據(jù)(高度重復(fù)是指相對于表中的總行數(shù),數(shù)據(jù)只有很少的幾個不同值)??紤]在一 個有 100 萬行的表中,每個列只有 3 個可取值: Y 、 N 和 NULL 。舉例來說,如果你需要頻繁地統(tǒng)計多少行有值Y ,這就很適合建立位圖索引。不過并不是說如果這個表中某一列有 11.000 個不同的值就不能建立位圖索引,這一列當然也可以建立 位圖索引。在一個 OLTP 數(shù)據(jù)庫中,由于存在并發(fā)性相關(guān)的問題,所以不能考慮使用位圖索引(后面我們就會討論這一點)。注意,位圖索引要求使用 Oracle 企業(yè)版或個人版。

位圖聯(lián)結(jié)索引( bitmap join index ):這為索引結(jié)構(gòu)(而不是表)中的數(shù)據(jù)提供了一種逆規(guī)范化的 方法。例如,請考慮簡單的 EMP 和 DEPT 表。有人可能會問這樣一個問題: “ 多少人在位于波士頓的部門工作 ?“ EMP 有一個指向 DEPT 的外鍵,要想統(tǒng)計 LOC 值為 Boston 的部門中的員工人數(shù),通常必須完成表聯(lián)結(jié),將 LOC 列聯(lián)結(jié)至 EMP 記錄來回答這個問題。通過使用位圖聯(lián)結(jié)索引,則可以在 EMP 表上對 LOC 列建立索引 。

3、 基于函數(shù)的索引( function-based index )

這些就是 B* 樹索引或位圖索引,它將一個函數(shù)計算得到的結(jié)果存儲在行的列中,而不是存儲列數(shù)據(jù)本身。可以把基于函數(shù)的索引看作一個虛擬列(或派生列)上的索引,換句話說,這個列并不物理存儲在表中?;诤瘮?shù)的索引可以用于加快形如 SELECT * FROM T W HERE FUNCTION(DATABASE_COLUMN) = SAME_VALUE 這樣的查詢,因為值 FUNCTION(DATABASE_COLUMN) 已經(jīng)提前計算并存儲在索引中。

4、 應(yīng)用域索引( application domain index )

應(yīng)用域索引是你自己構(gòu)建和存儲的索引,可能存儲在Oracle 中,也可能在 Oracle 之外。你要告訴優(yōu)化器索引的選擇性如何,以及執(zhí)行的開銷有多大,優(yōu)化器則會根據(jù)你提供的信息來決定是否使用你的索引。 Oracle 文本索引就是應(yīng)用域索引的一個例子;你也可 以使用構(gòu)建 Oracle 文本索引所用的工具來建立自己的索引。需要指出,這里創(chuàng)建的 “ 索引 “ 不需要使用傳統(tǒng)的索引結(jié)構(gòu)。例如, Oracle 文本索引就使用了一組表來實現(xiàn)其索引概念。

5、HASH索引

使用HASH索引必須要使用HASH群集。建立一個群集或HASH群集的同時,也就定義了一個群集鍵。這個鍵告訴Oracle如何在群集上存儲表。在存儲數(shù)據(jù)時,所有與這個群集鍵相關(guān)的行都被存儲在一個數(shù)據(jù)庫塊上。若數(shù)據(jù)都存儲在同一個數(shù)據(jù)庫塊上,并且使用了HASH索引,Oracle就可以通過執(zhí)行一個HASH函數(shù)和I/O來訪問數(shù)據(jù)——而通過適用一個二元高度為4的B-樹索引來訪問數(shù)據(jù),則需要在檢索數(shù)據(jù)時使用4個I/O。

技巧:HASH索引在有限制條件(需要指定一個確定的值而不是一個值范圍)的情況下非常有用。

6、分區(qū)索引

分區(qū)索引就是簡單地把一個索引分成多個片斷,這樣可以訪問更小的片斷,并且可以把這些片斷分別存放在不同的硬盤上(避免I/O問題)。B-數(shù)索引和位圖索引都可以被分區(qū),HASH索引不可以被分區(qū)。

有兩種類型的分區(qū)索引:本地分區(qū)索引和全局分區(qū)索引。每個類型都有兩個子類型,有前綴索引和無前綴索引。如果使用了位圖索引就必須是本地索引。

把索引分區(qū)最主要的原因是可以減少所需讀取的索引的大小,另外把分區(qū)放在不同的表空間中可以提高分區(qū)的可用性和可靠性。

oracle 倒序查最后幾條數(shù)據(jù)或去重后時間段獲取

如果表非常大,需要用rownum查詢指定的幾條,下面命令可以實現(xiàn)

select * from(

select *

from T_NB_COPY t

order by create_time desc

) b where rownum = 5

去重及時間段獲取

select distinct t.device_id from T_RECEIVE_LOG t where ?t.receive_time = to_date('2018-02-28 00:00:00','yyyy-mm-dd hh24:mi:ss') and t.receive_time = to_date('2018-02-27 00:00:00','yyyy-mm-dd hh24:mi:ss')

Oracle降序索引的定意及回溯是怎樣的

降序索引本質(zhì)上是FBI,其具體定義可以通過 user_ind_expressions 或dba_ind_expressions 查詢。

那么同樣的,降序索引只有在CBO下才能被使用。

Connected to Oracle9i Enterprise Edition Release 9.2.0.4.0

Connected as eygle

SQL create table t as select * from dba_users;

Table created

SQL create index idx_username_desc on t(username desc);

Index created

SQL select index_name,table_name,INDEX_TYPE from user_indexes where table_name='T';

INDEX_NAME TABLE_NAME INDEX_TYPE

------------------------------ ------------------------------ ---------------------------

IDX_USERNAME_DESC T FUNCTION-BASED NORMAL

SQL select column_name,column_position,descend from user_ind_columns

2 where table_name='T';

COLUMN_NAME COLUMN_POSITION DESCEND

------------------------------ --------------- -------

SYS_NC00013$ 1 DESC

SQL

SQL select * from user_ind_expressions where table_name='T';

INDEX_NAME TABLE_NAME COLUMN_EXPRESSION COLUMN_POSITION

------------------------------ ------------------------------ ------------------------------ ---------------

IDX_USERNAME_DESC T "USERNAME" 1

oracle 何時使用倒序索引

使用倒序索引提升ORDER BY DESC性能

使用倒序索引(INDEX DESC),可以大幅提升帶有order by desc子句的SQL語句性能。

舉例

1、表名:test_t,有一字段名為object_id

2、總數(shù)據(jù)量:580000行,segment_size:72MB

3、Where條件(Owner=’SYS’ and Object_id50000)的行數(shù):32472行

4、SQL語句:select * from test_t where owner='SYS' and object_id 50000 order by object_id desc

5、希望借助倒序索引,提升order by object_id desc的性能

希望能幫到你。

oracle 數(shù)據(jù)庫如何建立索引 如何用索引?

創(chuàng)建索引語法:

CREATE [UNIQUE] | [BITMAP] INDEX index_name

--unique表示唯一索引

ON table_name([column1 [ASC|DESC],column2

--bitmap,創(chuàng)建位圖索引

[ASC|DESC],…] | [express])[TABLESPACE tablespace_name][PCTFREE n1]

--指定索引在數(shù)據(jù)塊中空閑空間

[STORAGE (INITIAL n2)][NOLOGGING]

--表示創(chuàng)建和重建索引時允許對表做DML操作,默認情況下不應(yīng)該使用

[NOLINE][NOSORT];

--表示創(chuàng)建索引時不進行排序,默認不適用,如果數(shù)據(jù)已經(jīng)是按照該索引順序排列的可以使用

擴展資料:

1、如果有兩個或者以上的索引,其中有一個唯一性索引,而其他是非唯一,這種情況下oracle將使用唯一性索引而完全忽略非唯一性索引

2、至少要包含組合索引的第一列(即如果索引建立在多個列上,只有它的第一個列被where子句引用時,優(yōu)化器才會使用該索引)

3、小表不要簡歷索引

4、對于基數(shù)大的列適合建立B樹索引,對于基數(shù)小的列適合簡歷位圖索引

5、列中有很多空值,但經(jīng)常查詢該列上非空記錄時應(yīng)該建立索引

6、經(jīng)常進行連接查詢的列應(yīng)該創(chuàng)建索引

7、使用create index時要將最常查詢的列放在最前面

8、LONG(可變長字符串數(shù)據(jù),最長2G)和LONG RAW(可變長二進制數(shù)據(jù),最長2G)列不能創(chuàng)建索引

9、限制表中索引的數(shù)量(創(chuàng)建索引耗費時間,并且隨數(shù)據(jù)量的增大而增大;索引會占用物理空間;當對表中的數(shù)據(jù)進行增加、刪除和修改的時候,索引也要動態(tài)的維護,降低了數(shù)據(jù)的維護速度)

oracle中如何將主碼的索引由升序改為降序?

索引只是提供快速查詢數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu),本身無所謂升序和降序,索引本質(zhì)其實是索引值和索引值數(shù)據(jù)塊rowid的一對值,就像我們圖書中的目錄一樣,本身就不是連續(xù)的,可以通過頁碼快速查找。如果索引分布不均勻,可以進行反轉(zhuǎn)索引使索引值均勻。

分享標題:oracle怎么倒序索引,oracle倒序查詢
本文來源:http://chinadenli.net/article2/heijic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、外貿(mào)建站網(wǎng)站制作、網(wǎng)站設(shè)計公司、自適應(yīng)網(wǎng)站、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司