索引的設計和使用

2021-07-25 20:00:19 字數 1125 閱讀 8165

1、索引概述

(1)可以定義每個表的最大索引數(至少16個)和最大索引長度(總索引長度只是256位元組)

(2)myisam和innodb儲存引擎的表預設建立的都是btree索引。

(3)mysql目前不支援函式索引

(4)支援字首索引(對索引欄位的前n非字元建立索引)。myisam索引的字首長度可以達到1000位元組長,innodb索引的長度可達767位元組。

(5)支援全文本(fulltext)索引,可以用於全文搜尋。5.0版只有myisam支援,並且只限於char、varchar和text列。索引總是對整個列進行的,不支援區域性(字首)索引。

(6)只有myisam支援空間型別索引,且索引的字段必須是非空的。

(7)預設情況,memory儲存引擎使用hash索引,但也支援btree索引。

2、設計索引的原則

(1)最適合索引的列是出現在where子句中的列,或連線子句中指定的列,而不是出現在select關鍵字後的選擇列表中的列。

(2)使用唯一索引。索引的列的基數越大,索引的效果越好。

(3)使用短索引。若對字串進行索引,應該指定乙個字首長度。

(4)利用最左字首

(5)不要過度索引

(6)innodb的表預設按主鍵順序儲存。沒有主鍵有唯一索引那就按唯一索引的順序儲存。既沒主鍵又沒唯一索引,表中自動生成乙個內部列,按這個列的順序儲存。按主鍵或內部列的訪問是最快的,所以innodb的表盡量自己指定主鍵。而且innodb表的普通索引都會保持主鍵的鍵值,所以主鍵要盡可能選擇較短的資料型別。

3、btree索引和hash索引

(1)hash索引

只用於=或<=>操作符的等式比較,

優化器不能使用hash索引來加速order by操作

mysql不能確定在2個值之間大約有多少行。若將myisam改為hash索引的memory表,會影響一些查詢的執行效率、

只能使用整個關鍵字來搜尋一行。

(2)btree索引

當使用》、<、<=、>=、between、!=、<>、like 'pattern'(其中pattern不以萬用字元開始)操作時,都可以使用相關列上的索引。

注意:memory表,對索引字段進行範圍查詢時,只有btree索引可以通過索引訪問,而hash索引實際上是全表掃瞄的。

MySQL(七) 索引的設計和使用

索引是資料庫中用來提高效能的最常用工具,下面簡單介紹一下索引的型別和設計原則。常用引擎的索引方式 特點 myisam innodb memory merge b樹索引 支援 預設 支援 預設 支援支援 雜湊索引 支援 預設 全文索引 支援字首索引 支援支援 索引在建立表的時候可以同時建立,也可以隨時...

7 mysql 索引的設計和使用

索引用於快速找出在某個列中有一特定值的行。不使用索引,mysql必須從第1條記錄開始然後讀完整個表直到找出相關的行。表越大,花費的時間越多。如果表中查詢的列有乙個索引,mysql能快速到達乙個位置去搜尋到資料檔案的中間,沒有必要看所有資料。在mysql中所有的型別資料列都可以被索引,對相關列使用索引...

開發篇之索引的設計和使用

索引用於快速找出某個列中有一特定值的行 create unique fulltext spatial index index name using index type on table name index col name index col name col name length asc d...