成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入探討Oracle函數索引

數據庫 Oracle
這里介紹Oracle函數索引的好處: Exp: function(column1) 如果表中有1000行,即便column1列上建有索引,索引在此時也不被使用,function會執行1000次。

Oracle還是比較常用的,于是我研究了一下Oracle函數索引,在這里拿出來和大家分享一下,希望對大家有用。

1.Oracle函數索引的好處: Exp: function(column1) 如果表中有1000行,即便column1列上建有索引,索引在此時也不被使用,function會執行1000次。

2.建立Oracle函數索引會使插入/更新性能稍有下降,但是查詢速度有了極大的提高。另外如果更新的時候沒有涉及到建立Oracle函數索引的這個列,那就不會產生額外的開銷。

3.部分行建立索引:
1)某一列只有很少的基數,例如只有Y和N
2)通常只會查詢where column1 = ‘N’
3)并且值為N的行占很小的比例
4)在此列上建立索引,由于很大的一部分索引空間是浪費的(等于Y的),不會使用到的,所以我們可以在值為’N’的那些行上面建立索引。
5)Create index I on T(decode(column1 , ‘N’, ‘N’))
6)利用的是B樹索引特性,如果列值為null,在索引中就沒有相應的條目。

4.使用Oracle函數索引來保證復雜的約束:(某個條件成立時,X,Y,Z必須唯一)
1)如果項目表,項目有2種狀態,ACTIVE和INACTIVE
2)希望ACTIVE的項目必須有唯一的項目名,INACTIVE的項目沒有此要求
3)此時項目狀態這列上我們不適合建立唯一鍵
4)但是我們可以建立一個唯一索引
5)Create unique index I on T(decode(STATUS , ‘ACTIVE’ , NAME))
6)利用的還是B樹索引特性,如果列值為null,在索引中就沒有相應的條目。

Oracle函數索引索引的一些常見問題

1.B樹索引特性,如果列值為null,在索引中就沒有相應的條目。
1)Create table T (x int , y int)
2)Create unique index I T(x , y)
3)Insert into T values(1 , 1)
4)Insert into T values(null , 1)
5)Insert into T values(1 , null)
6)Insert into T values(null , null)
7)此時索引中只有三行.(null , null)不在索引行中
8)Insert into T values(null , null) --成功插入
9)Insert into T values(1 , null)--報錯,違反index唯一性
10) 所以我們可以看到ORACLE中null <> null (null代表N/A)
11) Where x is null --這個查詢無法使用索引,因為(null,null)不在索引中,如果ORACLE使用索引就會得到錯誤的答案
12) 同樣能夠得出結論,如果在一個允許null的列上面建立索引,x is null也不會使用索引
13) 可以使用索引的條件Create table T (x int , y int not null);

2.外鍵建立索引是需要的

3.索引跳躍式掃描
1)Create index I T(x , y)
2)Select * from T where x=5; --此時優化器可能不會使用索引
3)Select x , y from T where x=5;--可能使用索引,因為所需要的內容都在索引中
4)索引跳躍式掃描—skip scan
5)如果y只有2個基數,Y和N ,oracle會采用index
6)Select * from T where x=5; --會經過如下處理
7)Select * from T where x=5 and y=’Y’
8)Union all
9)Select * from T where x=5 and y=’N’;

4.如果索引建立在一個允許null的列上面, select * from T就會使用全表掃描,不使用索引,因為null的行并不在索引行中,所以不會使用index統計數目。

5.select * from T where x=5 等價于select * from T where to_number(x)=’5’,由于存在隱式轉換,所以x上的索引不會得到使用

6.where trunc(date) = trunk(sysdate) 可以轉換成 date >=trunc(sysdate) and date<trunk(sysdate+1)

7.定期分析表:如果發現Oracle 在有索引的情況下,沒有使用索引,這并不是Oracle 的優化器出錯。在有些情況下,Oracle 確實會選擇全表掃描(Full Table Scan),而非索引掃描(Index Scan)。

8.有些情況下單列索引不如復合索引有效率!以上介紹Oracle函數索引。

【編輯推薦】

  1. 分析討論Oracle數據庫恢復
  2. 詳談Oracle遠程磁盤鏡像
  3. 新的Oracle 11g功能展示
  4. 詳細分析Oracle XML數據
  5. 分析探討Oracle Data Guard
責任編輯:佚名 來源: 計世網
相關推薦

2010-04-15 14:02:32

Oracle網絡服務

2009-12-23 16:13:00

WPF Attache

2009-12-07 19:06:20

PHP mysql_f

2010-11-22 14:18:32

MySQL鎖機制

2010-07-21 09:38:15

PHP緩存技術

2021-05-17 05:36:02

CSS 文字動畫技巧

2010-03-05 13:44:00

Python序列

2009-08-27 11:27:58

foreach語句C# foreach語

2023-01-12 17:18:06

數據庫多云

2011-02-25 09:23:00

Java類加載器

2015-09-02 08:57:56

JavaHashMap工作原理

2010-03-31 14:58:03

云計算

2009-12-11 11:08:31

靜態路由策略

2013-07-11 09:45:48

扁平化扁平化設計

2009-11-12 13:56:54

2017-01-03 17:57:46

Android異步精髓Handler

2024-01-26 06:42:05

Redis數據結構

2009-10-16 09:17:39

屏蔽布線系統

2009-12-14 14:40:10

Ruby全局域變量

2012-02-28 14:43:43

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 男人的天堂avav| 午夜伊人 | 国产成人精品久久 | 国产精品夜夜夜一区二区三区尤 | 国产亚洲欧美日韩精品一区二区三区 | 伊人春色在线观看 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 国产激情精品一区二区三区 | 亚洲第一av网站 | 亚洲免费精品一区 | 国产精品伦一区二区三级视频 | 91在线一区二区三区 | 欧美国产在线一区 | 亚洲人成人一区二区在线观看 | 国产成人精品亚洲日本在线观看 | 国产日韩精品一区 | 国产成人精品一区二区三区在线 | 精品视频一区在线 | 99久久久99久久国产片鸭王 | www.婷婷| 成人日b视频 | 欧美日韩国产精品一区 | 色综合天天天天做夜夜夜夜做 | 91久久北条麻妃一区二区三区 | 国产精品久久久久久久久久妇女 | 国产欧美精品一区二区色综合朱莉 | 麻豆av在线免费观看 | 国产成人99久久亚洲综合精品 | 一级高清 | 亚洲欧美日本在线 | 国产精品一区二区不卡 | 亚洲色在线视频 | 99精品网| 欧美不卡 | 午夜三级在线观看 | 欧美日韩免费视频 | 99re视频| 成人老司机 | 成人1区2区 | 日一区二区 | 国产中文区二幕区2012 |