INDEX

索引

  • 一種獨立於表的模式對象,可以存儲在與表不同的磁盤或表空間中
  • 只能創建在表上,不能創建到視圖上
  • 索引被刪除或損壞,不會對錶產生影響,隻影響查詢速度
  • 在刪除一個表時,基與該表的所有索引會自動被刪除

優點

  • 能大大加快數據的檢索速度,這是創建索引最主要的原因
  • 加速數據庫表之間的連接
  • 創建唯一索引,保證數據庫表中每一行數據的唯一性

缺點

  • 佔用物理空間
  • 創建和維護索引需消耗時間,時間隨着數據量的增加而增加
  • 對錶中數據進行增,刪,改時,索引也需要維護,降低數據維護速度

創建索引

  • 自動創建:在定義primary key 或 unique 約束後,系統會自動的在相應的列上創建唯一性索引
  • 手動創建:create index 索引名 on table (字段名,…) 可放多個列

索引分類

  1. 普通索引

    create index emp_sal_ix on employees (salary)    
  2. 唯一性索引

    create unique index 索引名 on table (字段名,…)

    create unique index emp_name_ix on employees (empname)   
  3. 主鍵

    primary key 在一個表上只能創建一個,主鍵字段不能重複,不能爲null

  4. 全文索引

    create fulltext index 索引名 on table (字段名,…)

什麼時候創建索引

  • 經常用作查詢選擇的字段,建立索引
  • 經常作用表連接的屬性上,建立索引
  • 經常出現在關鍵字order by,group by,distinct後面的字段,建立索引
  • 列中數據值分佈範圍很廣

什麼時候不要創建索引

  • 表很小
  • 不是經常作爲查詢的字段
  • 表經常更新

索引失效

  • 如果條件中有or,即使其他有條件帶索引也不會使用(這就是問爲啥儘量少使用or的原因)
  • like查詢以%開頭

刪除索引

  1. drop index 索引名
  2. drop table 表名 (基於表的所有索引都會被刪除)

數據庫中的索引結構

因爲在使用二叉樹的時候,由於二叉樹的深度過大而造成I/O讀寫過於頻繁,進而導致查詢效率低下。因此採取多叉樹結構,B樹的各種操作能使B樹保持較低的高度

B樹又叫平衡多路查找樹,一顆m階的B樹的特性:

  • 樹中的每個結點最多含有m個孩子(m>=2)
  • 除根結點和葉子結點外,其他每個結點至少有ceil(m/2)個孩子 (ceil(x)爲一個取上限的函數)
  • 若根結點不是葉子結點,則至少有2個孩子(根結點爲葉子結點,整棵樹只有一個根結點,沒有孩子)
發佈了42 篇原創文章 · 獲贊 2 · 訪問量 7948
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章