SQL索引--基礎理論

來源:互聯網
上載者:User

標籤:查詢條件   分組   多列   設計原則   資料庫   條件   mysql   web技術   允許   

1、索引的定義

  索引是資料庫表中一列或多列的值進行的一種排序,用於快速找出在某一列中特定的值。

2、索引的原理

  如果不使用索引,則通常的查詢資料中,需要對錶中資料做一一對應的比較,直到找出所有相關的行為止。也就是說,當資料庫表中資料量越大,則查詢效率越低;而索引則是迅速到達一個位置,查詢資料檔案,而不必查詢所有資料。簡單來講,索引即如目錄一樣,先找到對應的目錄,然後根據儲存在索引中的rowid,快速找到所需的對應資料。

3、索引的特點

  a.優點:加快了查詢的速率,這是索引最重要的意義所在

      加快了表與表之間的連結,特別是在資料的參照完整性方面(參照完整性是通過定義外鍵與之間的對應關係來實現的),有特別的意義

      在使用分組和排序子句進行查詢時,也可以顯著減少查詢中分組和排序的時間

  b.缺點:在建立和維護索引時,需要耗費時間,而且伴隨著數量的增加,其耗費的時間也在增加

      索引需要佔據一定的磁碟空間。除了資料表佔據資料空間之外,每一個索引都要佔據一定的物理空間,當隨著資料量越來越大的時,索引所佔據的空間甚    至大於資料空間在對資料表進行增、刪、改的時候,索引也需要進行動態維護,這就增加了系統的負擔,降低了維護的速度。 

4、索引的分類

  a.普通索引和唯一索引

  普通索引:允許資料表列中有空值和重複;

  唯一索引:允許資料表列中有空值,但不許重複。主鍵是一種特殊的唯一索引,因為主鍵不許為空白;

  寫法:create index 索引名 on 表 (欄位名)--------------普通索引

     create unique index 索引名 on 表 (欄位名)-------唯一索引

  b.單列索引和複合式索引

  單例索引:一個索引只指定一個列,一個表中可以有多個單例索引

  複合式索引(複合索引):一個索引列包含了表中多個欄位,最多可以包含16個欄位,只有在查詢條件中使用到左邊欄位時,複合式索引才會有效。複合式索引堅持一個原則,使用頻率越高的欄位,排在最前面。

  寫法:create unique index 索引名 on 表 (欄位名1,欄位名2,...)----複合式索引

  c.全文索引

  全文索引類型為fulltext,在定義列的值上支援全文尋找,允許列插入重複或空值,全文索引可以在char、varchar、text、clob等類型的列上建立,其表現形式類似於like函數,而全文索引主要通過contains來實現。例如  select * from 表名 where contains((欄位1,欄位2),‘姚明‘)。另外,在MySQL中只有MyISAM儲存引擎支援全文索引

  

5、索引的設計原則

  索引的設計是為了提高資料的查詢速率,但是如果不好的索引設計不僅會佔據大量的磁碟空間、還會對系統效能造成很大的影響。

  1、資料量較少的資料庫表,不必添加索引。因為遍曆索引的時間可能比普通查詢的時間都要長,這時候的索引不會產生任何最佳化的效果。

  2、經常進行增、刪、改的資料庫表,盡量少的添加索引。因為每一次對錶的DDL操作,在對錶資料做更改的同時,相應的索引也會進行更新和調整。

  3、對於條件運算式中經常用到的欄位,但其不同值較少的欄位則沒必要添加索引。比如,在性別欄位,只有‘男’、‘女’,則沒必要添加索引,否則的話不僅會降低更新資料時候的效能,而且對查詢的時候也沒有任何效能上的提高。

  4、在頻繁使用order by或group by的欄位上添加索引,如果是多個欄位的話,可以使用複合式索引。

  5、當某個欄位有唯一性(unique)特徵時,可以使用唯一索引。不僅可以確保資料的完整性,也提高了查詢效能。

  

 

 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

正如 Firefox總裁Tristan Nitot 在解釋Firefox成功原因時,Tristan Nitot說:“在近6年的時間裡,Web技術不斷髮展的同時,瀏覽器卻並未有任何改善,因為微軟已經睡著了。”

而我也相信,如今的技術每天都在更新,如果我們今天睡著,明天我們就已經落後了。

 

我的每一句話都是自己手打,我不能保證每一句話的正確,但我保證每一個字都已經用心。------願我們一起進步

SQL索引--基礎理論

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.