Java物件導向系列[v1.0.0][索引與檢視]

Davieyang.D.Y發表於2020-09-25

索引

  • 索引是存放在schema中的一個資料庫物件,雖然索引總是從屬於資料表,但它也和是資料表一樣屬於資料庫物件,建立索引唯一的作用就是加速對錶的查詢,索引通過使用快速路徑訪問方法來快速定位資料,從而減少磁碟I/O
  • 索引作為資料庫物件,在資料字典中獨立存放,但不能獨立存在,必須屬於某個表
  • MySQL使用information_schema資料庫裡的STATISTICS表來儲存該資料庫例項中的所有索引資訊
  • 索引的好處是提升查詢速度,但當資料表中的記錄增加刪除修改時,資料庫需要維護索引,因此也會有一定的系統開銷,並且儲存索引資訊也需要一定的磁碟空間

建立索引

建立索引有兩種方式:

  • 自動:當在表上定義主鍵約束和唯一約束和外來鍵約束的時候,系統會為該資料列自動建立對應的索引
  • 手動:通過create index...語句來建立索引
create index index_name on table (column[, column]...);
create index davieyang_test_index on davieyang_test(davieyang_name); 
create index davieyang_test_index_multi on davieyang_test(first_name, last_name);

刪除索引

刪除索引也有兩種方式:

  • 自動:資料表被刪除時,該表上的索引自動被刪除
  • 手動:通過drop index...語句來刪除指定資料表上的指定索引
drop index 索引名 on 表名
drop index davieyang_test_index on davieyang_test

有些資料庫刪除索引時無須指定表名,因為他們要求建立索引時,每個索引都有唯一的名字,所以無須找你定表名,例如Oracle,但MySQL只要求同一個表內的索引不能重名,所以必須指定表名

檢視

檢視看上去非常像一個資料表,但他不是資料表,因為他不能儲存資料,檢視只是一個或多個資料表中資料的邏輯顯示,使用檢視有幾點好處:

  • 可以限制對資料的訪問
  • 可以使複雜的查詢變簡單
  • 提供了資料的獨立性
  • 提供了對相同資料的不同顯示

建立檢視

因為檢視只是資料表中資料的邏輯顯示,也就是一個查詢結果,所以建立檢視就是建立檢視名和查詢語句的關聯

# 如果檢視存在則使用新檢視替換原有檢視,如果不存在則建立檢視
create or replace view 檢視名
as
subquery

檢視的本質就是一條被命名的SQL

create or replace view view_davieyang_test
as
select davieyang_id, davieyang_name from davieyang_test;

MySQL允許在建立檢視時使用with check option子句,使用該子句建立的檢視不允許修改

create or replace view view_davieyang_test
as
select davieyang_id, davieyang_name from davieyang_test with check option;

大部分資料庫都採用with check option來強制不允許修改檢視的資料,但Oracle採用with read only來強制不允許修改檢視的資料

刪除檢視

drop view 檢視名
drop view view_davieyang_test;

相關文章