索引用於快速找出在某個列中有一特定值的行。不使用索引,mysql必須從第1條記錄開始然後讀完整個表直到找出相關的行。表越大,花費的時間越多。如果表中查詢的列有乙個索引,mysql能快速到達乙個位置去搜尋到資料檔案的中間,沒有必要看所有資料。
在mysql中所有的型別資料列都可以被索引,對相關列使用索引是提高select操作效能的最佳途徑。myisam和innodb儲存引擎的表預設建立索引都是btree索引。myisam還支援全文本索引,該索引可以用於建立全文搜尋。預設情況下, memory儲存引擎使用hash索引,但也支援btree索引。
最合適索引的列是出現在where子句中的列,或者連線子句中的列。
使用唯一索引,索引的列的基數越大,索引效果越好,如存放生日的列具有不同的值,很容易區分各個行,而記錄性別的列,只含有「m」和「f」,則對此列進行索引沒有多大用處,因為不管搜尋哪個值,都會大約得出一半的行。
使用字首索引,如果對乙個字串列進行索引,應該指定乙個字首長度。
如果索引了多列(復合索引),要遵守最左字首法則。所謂最左前列,指的是查詢從索引的最左前列開始,並且不跳過索引中的列。
對innodb儲存引擎的表,記錄缺省會按照一定的順序儲存,如果有明確定義的主鍵,則按照主鍵順序儲存,innodb表的普通索引都會儲存主鍵的鍵值,所有主鍵盡可能的選擇較短的資料型別。
索引列不應該作為表示式的一部分,即也不能在索引列上使用函式。
說明:
建立表(friends)與建立(uid和fuid的復合索引)。
friends表結構
參考1:thephper.com/?p=142
參考2:my.oschina.net/longniao/bl…
MySQL(七) 索引的設計和使用
索引是資料庫中用來提高效能的最常用工具,下面簡單介紹一下索引的型別和設計原則。常用引擎的索引方式 特點 myisam innodb memory merge b樹索引 支援 預設 支援 預設 支援支援 雜湊索引 支援 預設 全文索引 支援字首索引 支援支援 索引在建立表的時候可以同時建立,也可以隨時...
索引的設計和使用
1 索引概述 1 可以定義每個表的最大索引數 至少16個 和最大索引長度 總索引長度只是256位元組 2 myisam和innodb儲存引擎的表預設建立的都是btree索引。3 mysql目前不支援函式索引 4 支援字首索引 對索引欄位的前n非字元建立索引 myisam索引的字首長度可以達到1000...
MySQL5 0中索引的設計和使用
很多開發者對mysql還是有深厚的感情,雖然現在已經被收購。至於mysql的前途到底是否會被開源組織接手還是怎麼樣?這個就暫時無解了。不過我想至少mysql的確有它的優勢。廢話就不說了。下面討論下mysql5.0中的索引的設計和使用。任何東西設計的好,那麼使用起來就順手。不過很多時候給出設計什麼規則...