序列、視圖、索引(面試看這個就GO了)


oracle內置對象

序列、視圖、索引

 

序列

create sequence aaa start with 1;

 

wKiom1ir2yThJXdtAAALIfxQo_g972.png-wh_50 

使用

wKioL1ir2z6g5883AAAFWTWlLEc456.png-wh_50 

視圖

wKiom1ir23uh1AaPAAAJ5seOCjY804.png-wh_50 

創建好之後

然後直接用

wKioL1ir24mR0yD1AAAC91jsGn8815.png-wh_50 

OK

有了視圖可以代替子查詢,使得sql簡潔

視圖存放的不是真正的數據,而是查詢語句

通過視圖可以修改基表

wKioL1ir25bQas_RAAA62zXyEeA872.png-wh_50 

前提是視圖的數據結構要和基表的數據結構是一樣的纔可以!

只讀視圖

但是視圖是用來看的,不是用來改的

那麼如何在創建視圖時以後不讓做修改操作呢?答案如下:

wKioL1ir26OAk5d6AAAIY6WSP8c182.png-wh_50 

 

檢查視圖

還有一種情況,如果要修改視圖,那麼視圖列本身是沒有約束的,那麼加上檢查視圖,就可以到基表中去做約束檢查

wKiom1ir263wb0YuAAAIXFWK1G0255.png-wh_50 

以上都爲簡單視圖

多表聯查的結果爲複雜視圖,僅僅只能用來簡化查詢

注意:能用表的地方都能用視圖!

 


 

終於到了索引!

索引的作用

wKioL1ir2-Hj2eoZAAAQrcsqXvw969.png-wh_50 

面試題:海量數據如何查詢速度快:索引+優化

 

OK,我們來學習索引

當我們爲列創建約束的時候,有一些約束自動就爲我們創建了索引

wKiom1ir2_SiPBe8AAAJ9Tb9sTs869.png-wh_50 

索引分好多種,上面自動添加的叫做唯一值索引

接下來我們自己建索引,叫做普通索引

單字段索引:

wKioL1ir3AKQrbG3AAAGSZw9vp8990.png-wh_50 

 

多字段索引

wKioL1ir3GiDRZ3EAAAJ3oy0bfE554.png-wh_50 

其實,索引是一張表,就像書的目錄一樣,查詢東西能夠快速定位,不用一頁一頁的翻來找。

另外,索引是站數據庫硬盤和內存空間的,也就是所謂的耗費資源換取速度

最重要的是,爲字段加索引之後,是可以換取速度的加快,但是同時會降低增刪改的速度,因爲做增刪改操作的時候,會更新索引表,相當於耗費了兩倍的速度!

索引表是數據庫自動爲我們維護,不用我們自己維護,這就是索引另一個最大的好處。

 

特殊索引:位圖索引

有一種情況,創建的某些列的數據僅僅只有幾類情況,比如說

性別:只有男女

某學校學生表的班級:只有一年級二年級到六年級

那麼想要快速定位這些數據,比如,我想要查某學校10萬學生裏二年級的人的信息

那麼我們需要一種特殊的索引,叫做位圖索引

 

當我查詢


wKioL1ir3MDBhfUnAAADr_a37Bs710.png-wh_50

這句話的時候,會很快

 

加索引規則,只有常用的where限定列,才加索引

wKiom1ir3JWC82vCAAATAVXTrrM643.png-wh_50 

比如我要經常查時間段,也就是where中界定時間段,那麼我們就給時間列加索引

wKiom1ir3KTB6PVvAAAFg6quqbw856.png-wh_50 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章