1. 程式人生 > >資料庫的【觸發器】【索引】【儲存過程】【檢視】

資料庫的【觸發器】【索引】【儲存過程】【檢視】

1 觸發器

觸發器是一中特殊的儲存過程,主要是通過事件來觸發而被執行的。它可以強化約束,來維護資料的完整性和一致性,可以跟蹤資料庫內的操作從而不允許未經許可的更新和變化。可以聯級運算。如,某表上的觸發器上包含對另一個表的資料操作,而該操作又會導致該表觸發器被觸發。

2 儲存過程

2.1 什麼是儲存過程?用什麼來呼叫?

儲存過程是一個預編譯的SQL語句,優點是允許模組化的設計,就是說只需建立一次,以後在該程式中就可以呼叫多次。如果某次操作需要執行多次SQL,使用儲存過程比單純SQL語句執行要快。 呼叫: 1)可以用一個命令物件來呼叫儲存過程。 2)可以供外部程式呼叫,比如:java程式。

2.2 儲存過程的優缺點?

優點: 1)儲存過程是預編譯過的,執行效率高。 2)儲存過程的程式碼直接存放於資料庫中,通過儲存過程名直接呼叫,減少網路通訊。 3)安全性高,執行儲存過程需要有一定許可權的使用者。 4)儲存過程可以重複使用,可減少資料庫開發人員的工作量。 缺點:移植性差

3 索引

3.1 索引的作用?和它的優點缺點是什麼?

索引就一種特殊的查詢表,資料庫的搜尋可以利用它加速對資料的檢索。它很類似與現實生活中書的目錄,不需要查詢整本書內容就可以找到想要的資料。索引可以是唯一的,建立索引允許指定單個列或者是多個列。缺點是它減慢了資料錄入的速度,同時也增加了資料庫的尺寸大小。

3.2 什麼樣的欄位適合建索引?

唯一、不為空、經常被查詢的欄位

3.3 索引型別有哪些?

邏輯上:

Single column 單行索引

Concatenated 多行索引

Unique 唯一索引

NonUnique 非唯一索引

Function-based 函式索引

Domain 域索引 物理上:

Partitioned 分割槽索引

NonPartitioned 非分割槽索引

B-tree :

Normal 正常型B樹

Rever Key 反轉型B樹 Bitmap 點陣圖索引

3.4 索引有B+索引和hash索引,各自的區別

hash索引,等值查詢效率高,
不能排序
不能進行範圍查詢

B+索引
資料有序
範圍查詢

3.5 B+索引資料結構,和B樹的區別

1.單一節點儲存更多的元素,B+樹空間利用率更高,使得查詢的IO次數更少。
2.所有查詢都要查詢到葉子節點,查詢效能穩定。
3.所有葉子節點形成有序連結串列,便於範圍查詢

3.6 最左匹配原則 (左字首匹配原則)
最左匹配原則是針對索引的
舉例來說:兩個欄位(name,age)建立聯合索引,如果where age=12這樣的話,是沒有利用到索引的,這裡我們可以簡單的理解為先是對name欄位的值排序,然後對age的資料排序,如果直接查age的話,這時就沒有利用到索引了,查詢條件where name=’xxx’ and age=xx 這時的話,就利用到索引了,再來思考下where age=xx and name=’xxx‘ 這個sql會利用索引嗎,按照正常的原則來講是不會利用到的,但是優化器會進行優化,把位置交換下。這個sql也能利用到索引了

4 檢視

4.1 什麼叫檢視?遊標是什麼?

檢視:是一種虛擬的表,具有和物理表相同的功能。可以對檢視進行增,改,查,操作,試圖通常是有一個表或者多個表的行或列的子集。對檢視的修改會影響基本表。它使得我們獲取資料更容易,相比多表查詢。 遊標:是對查詢出來的結果集作為一個單元來有效的處理。遊標可以定在該單元中的特定行,從結果集的當前行檢索一行或多行。可以對結果集當前行做修改。一般不使用遊標,但是需要逐條處理資料的時候,遊標顯得十分重要。

4.2 檢視的優缺點?

優點: 1)對資料庫的訪問,因為檢視可以有選擇性的選取資料庫裡的一部分。 2 )使用者通過簡單的查詢可以從複雜查詢中得到結果。 3 )維護資料的獨立性,試圖可從多個表檢索資料。 4 )對於相同的資料可產生不同的檢視。 缺點: 效能:查詢檢視時,必須把檢視的查詢轉化成對基本表的查詢,如果這個檢視是由一個複雜的多表查詢所定義,那麼,那麼就無法更改資料