国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

在Oracle 9i里基于函數的僅索引掃描

2024-08-29 13:34:20
字體:
來源:轉載
供稿:網友
Oracle8i里的僅索引(index-only)執行計劃在Oracle9i里得到了加強,所以現在能夠提供對基于函數的索引(function-based index,FBI)的支持。 Oracle的索引組織表(index-organized table,IOT)是一個很好的例子,能夠說明Oracle如何在可能的時候忽略對表格的訪問。簡而言之,每當Oracle SQL優化器檢測到它能夠為查詢提供服務,而不需要觸及表格行的時候,Oracle就會調用一個完整的索引掃描,快速讀取索引的每個塊,而不需要觸及表格本身。 完整索引執行計劃要比訪問表格更快,其原因有兩個: 1.DB_FILE_MULTIBLOCK_READ_COUNT會被調用,以便更快地預先取回索引塊。 2.完整索引掃描能夠使用Oracle的平行查詢。 在Oracle9i之前的版本里,只有在索引被創建而且不帶有任何NULL值的時候,僅索引掃描才可能被使用。FBI是Oracle8的一個福音,它們事實上能夠消除任何不必要的完整表格掃描。由于FBI能夠精確地復制查詢的WHERE子句里的任何數據列,所以它們一般都被用來確保索引正在服務查詢。 為了說明完全索引掃描如何同FBI一起工作,現在讓我們來看下面這個關于學生的簡單表格:
    create table    student  (    student_name,    date_of_birth  );
   利用這個表格,我們在表格所有的數據列上創建了一個已連接的FBI:
    create index    whole_student  on    student  (    initcap(student_name),    to_char(date_of_birth,'MM-DD-YY')  );
   Oracle9i知道,參照SQL陳述式里這些數據列的任何查詢都能夠使用完整索引掃描:
    select * from student  where    initcap(student_name) = 'Jones';    select * from student  where     to_char(date_of_birth,'MM-DD=YY') = '04-07-85';
   那么,什么時候Oracle會選擇完整索引掃描呢?實際上,完整索引掃描是非常少見的,其原因有兩個: 1.Oracle9i會要求WHERE子句里的所有判定述詞(PRedicate)都匹配索引里的這些數據列。 2.任何指定的數據列都有眾多的內置函數可用,因此更有可能的情況是:會存在完全匹配查詢的索引。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 元谋县| 伊川县| 上栗县| 门源| 浦城县| 葫芦岛市| 虹口区| 永靖县| 德兴市| 邢台市| 东莞市| 合肥市| 那坡县| 聂拉木县| 高碑店市| 边坝县| 陕西省| 宁武县| 柯坪县| 炎陵县| 沛县| 聊城市| 资溪县| 库伦旗| 金堂县| 清水县| 临朐县| 延川县| 吕梁市| 海兴县| 平泉县| 万载县| 长治市| 嘉定区| 新乐市| 淳化县| 台北市| 邹平县| 惠水县| 襄汾县| 苏尼特左旗|