程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql索引的設計和使用

mysql索引的設計和使用

編輯:MySQL綜合教程

mysql索引的設計和使用


概述

索引用於快速找出在某個列中有一特定值的行。不使用索引,MySQL必須從第1條記錄開始然後讀完整個表直到找出相關的行。表越大,花費的時間越多。如果表中查詢的列有一個索引,MySQL能快速到達一個位置去搜尋到數據文件的中間,沒有必要看所有數據。

在MySQL中所有的類型數據列都可以被索引,對相關列使用索引是提高select操作性能的最佳途徑。MyISAM和InnoDB存儲引擎的表默認創建索引都是BTREE索引。MyISAM還支持全文本索引,該索引可以用於創建全文搜索。默認情況下, MEMORY存儲引擎使用HASH索引,但也支持BTREE索引。

設計索引原則

最合適索引的列是出現在where子句中的列,或者連接子句中的列。 使用唯一索引,索引的列的基數越大,索引效果越好,如存放生日的列具有不同的值,很容易區分各個行,而記錄性別的列,只含有“m”和“f”,則對此列進行索引沒有多大用處,因為不管搜索哪個值,都會大約得出一半的行。 使用前綴索引,如果對一個字符串列進行索引,應該指定一個前綴長度。 如果索引了多列(復合索引),要遵守最左前綴法則。所謂最左前列,指的是查詢從索引的最左前列開始,並且不跳過索引中的列。 不要過多的使用索引。每一次的更新,刪除,插入都會維護該表的索引;更多的索引意味著也需要更多的空間 ;過小的表,建索引可能會更慢哦 :) (讀個2頁的宣傳手冊,你還先去找目錄?)。 對InnoDB存儲引擎的表,記錄默認會按照一定的順序保存,如果有明確定義的主鍵,則按照主鍵順序保存,InnoDB表的普通索引都會保存主鍵的鍵值,所有主鍵盡可能的選擇較短的數據類型。 索引列不應該作為表達式的一部分,即也不能在索引列上使用函數。

說明:

創建表(friends)
這裡寫圖片描述
創建(uid和fuid的復合索引)。

對第4條說明:
最左前綴法則
第2條語句,從索引的第二列開始查找,使用索引失敗,導致MySQL采用ALL訪問策略,即全表查詢.在開發中,應該盡量避免全表查詢。 對第7條說明:
索引不能使用表達式或函數
第2和3條語句都有使用表達式,索引派不上用場。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved