快速訪問資料
既可以改善資料庫效能,又可以保證列值的唯一性
實現表與表之間的參照完整性
在使用order by,group by子句進行資料檢索時,利用索引可以減少排序和分組的時間
索引按照儲存方法分類,可以分為兩類:
(1)b樹索引
的儲存結構類似圖書的索引結構:有分支和葉兩種型別的儲存資料塊,分支相當於圖書的大目錄,葉子相當於索引到的具體書頁。oracle用b樹(b*-tree)機制儲存索引條目,以保證用最短路徑訪問鍵值。預設情況下大多使用b*數索引,該索引就是通常所說的唯一索引、逆序索引等。
(2)位圖索引主要用來節省空間,減少oracle對資料塊的訪問。它採用位圖偏移方式來與表的行id號對應。採用位圖索引一般是在重複值太多的表字段情況下。
索引按照功能和索引物件可分為以下六種型別:
(1)唯一索引:唯一索引意味著物件不會有兩行記錄相同的索引鍵值。
(2)非唯一索引:不對索引列的值進行唯一性限制的列的稱為非唯一索引。
(3)分割槽索引:所謂分割槽索引是指索引可以分散地存在於多個不同的表空間中,其優點是可以提高資料查詢的效率。
(4)未排序索引:未排序索引也稱為正向索引。
(5)逆序索引:逆序索引也稱為反向索引。該索引同樣保持索引列按順序排列,但是顛倒已索引的每列的位元組。
(6)基於函式的索引:基於函式的索引是指索引中的一列或者多列是乙個函式或者表示式,索引根據函式或者表示式計算索引列的值。
1、在表中插入資料後建立索引。如果在裝載資料之前建立索引,那麼插入每行時,oracle都必須更改索引。
2、索引正確的表和列 。如果經常索引的內容僅為包含大量資料的表中少於15%的行,那就建立索引。為了改善多個表的相互關係,常常使用索引列來進行關係連線。
3、合理安排索引列。常用的列放在前面,因為列的排序影響查詢效能。
4、限制表中索引的數量。索參數量越多,修改表中資料對索引做出更改的工作量越大。
5、指定索引資料塊空間。
6、根據索引大小設定儲存引數。
域完整性:又稱為列完整性,指定乙個資料集對某乙個列是否有效和確定是否允許空值。通常經過使用有效性來實現,還可以通過限制資料型別、格式或者可能的取值範圍來實現。
實體完整性:又稱為行完整性,要求表中的每一行都有乙個唯一的標誌符。
參照完整性:主鍵是指在表中年唯一標誌表的每個資料行的乙個或者多個表列。外來鍵是指如果乙個表中的乙個或者若干個欄位的組合是另乙個表的主鍵,則該字段或者字段組合為該錶的外來鍵。
(1)從表不能引用不存在的鍵值。
(2)若主表的鍵值改變,那麼整個資料庫中對從表鍵值所有的引用都要進行一致的更改。
(3)若主表中沒有關聯的記錄,就不能將記錄新增到從表。
(4)若刪除主表某一記錄,應該先刪除從表中與該記錄匹配的相關記錄。
約束型別
描述not null
不允許空值
unique
唯一,防止出現冗餘值
primary key
主關鍵字
foreign key
外關鍵字
check
檢查滿足條件
索引與資料完整性約束
mysql訪問表中的行,順序訪問和索引訪問。建立索引的作用 快速讀取資料 保證資料記錄的唯一性 實現標語表之間的參照完整性 在使用group by order by 子句進行資料檢索時,使用索引減少排序和分組的時間。全文索引的索引型別必須是fulltext。只能在varchar或者text型別的列上...
索引和資料完整性
一 索引 1 索引類似於課表的目錄,作用是為了提高查詢的速度 2 建立索引 1 b樹 balance tree 索引。多路搜尋樹 語法 create index 索引名 on 表名 列名 create index stu index on students stuno pctfree 50 tabl...
MySQL資料完整性(實體完整性 域完整性)
資料完整性 為保證插入到資料庫中的資料是正確的,防止使用者輸入錯誤的資料 分為實體完整性 域完整性 參照完整性 下節再說 1 實體完整性 實體指的是表中的一行,一行記錄對應乙個實體 通過主鍵實現 主鍵 關鍵字 primary key 特點 不能為null,並且唯一。邏輯主鍵 推薦 例如id,不代表實...