文章詳情頁
Oracle9i的新特性索引跳躍式掃描的實現
瀏覽:106日期:2023-11-26 12:36:11
索引跳躍式掃描(index skip scan)是Oracle9i用來提高性能的新特性,對于使用復合索引的數據庫應用程序意義尤為重大。 復合索引(又稱為連接索引)是一個包含多個字段的索引。在ORACLE9i以前的ORACLE版本里,只有那些在WHERE子句里引用整個索引或者是引用索引的一個或多個前導字段的查詢,才能使復合索引有效而提高檢索效率。而在ORACLE9i里,一個復合索引即使在一次查詢中沒有使用前導字段,也可能通過“索引跳躍式掃描”被有效引用。在一次跳躍式掃描中,每個復合索引前導字段的獨特值(DISTINCT VALUE)只會被搜索一次,ORACLE9i會在復合索引前導字段每個獨特值區間結合WHERE子句中的其它復合索引字段搜索符合條件的目標記錄,這種做法的結果導致了在索引中的跳躍式掃描。 索引跳躍式掃描主要有兩個優點: 1、以前版本中的表掃描(TABLE SCAN)可能會轉變為索引掃描,提高了某些查詢的執行效率; 2、應用程序使用較少的索引就能達到提高效能的目的,并且既節省存儲空間,又能提高DML和維護操作的效率。 假設有一個汽車注冊信息的表,包含了250萬條紀錄,結構如下:REGISTERED_OWNERS (STATE VARCHAR2(2) NOT NULL, REGISTRATION# VARCHAR2(10) NOT NULL, FIRST_NAME VARCHAR2(30), LAST_NAME VARCHAR2(30), MAKE VARCHAR2(30), MODEL VARCHAR2(15), YEAR_MFG NUMBER, CITY VARCHAR2(30), ZIP NUMBER)進一步假設在字段(STATE,REGISTRATION#)上存在一個復合索引,那么下面語句的執行速度會有很大提高:SELECT first_name, last_name, zip FROM REGISTERED_OWNERS WHERE registration# = '4FBB428'使用索引查詢速度大約可以提高90倍,在ORACLE8i(索引跳躍式掃描)中,這個查詢需要21.42秒,而同樣的硬件配置使用ORACLE9i只需要0.24秒。 索引跳躍式掃描非常有效,對用戶和應用程序而言是透明的,并且不需要使用額外的新索引就能提高數據庫的性能,有些時候甚至可以答應移除某些索引而不會對性能有太大影響。
排行榜