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

2021-09-04 05:06:41 字數 1917 閱讀 3164

索引是資料庫中用來提高效能的最常用工具,下面簡單介紹一下索引的型別和設計原則。

常用引擎的索引方式 特點

myisam

innodb

memory

merge

b樹索引

支援(預設)

支援(預設)

支援支援

雜湊索引

支援(預設)

全文索引

支援字首索引

支援支援

索引在建立表的時候可以同時建立,也可以隨時增加新的索引,建立新索引的語法為:

create [unique|fulltext|spatial] index index_name [using index_type] on tbl_name( col_name [(length)] [asc|desc])

使用alter table 語法來增加索引,與上面類似。

mysql> create index cityname on city (city(10));

query ok, 0 rows affected (0.03 sec)

records: 0 duplicates: 0 warnings: 0

mysql> explain select * from city where city = 'fuzhou' \g;

*************************** 1. row ***************************

id: 1

select_type: ******

table: city

partitions: null

type: ref

possible_keys: cityname

key: cityname

key_len: 32

ref: const

rows: 1

filtered: 100.00

extra: using where

1 row in set, 1 warning (0.00 sec)

刪除索引的語法為:

drop index index_name on tbl_name

mysql> drop index cityname on city;

query ok, 0 rows affected (0.01 sec)

records: 0 duplicates: 0 warnings: 0

下面列出的是一些已有的原則,建立索引時盡量遵守以便提公升效率。

memory型別表同時支援btree索引和hash索引,這兩個索引也有一些不同的適應範圍。

hash索引需要注意:

而btree索引就可以使用範圍搜尋和模糊搜尋,並使用相關列上的索引。

看下面的例子:

下列範圍查詢btree索引和hash索引都適用:

select * from t1 where key_col=1,or key_col in (15,18,20);

下列範圍查詢只適合btree索引:

select * from t1 where key_col > 1 and key_col < 10;

select * from t1 where key_col like 'ab%' or key_col between 'lisa' and 'simon';

當我們建立乙個memory型別的表時,預設使用的是hash索引,而此時如果對索引字段進行範圍查詢,此時的hash沒有起到作用,實際上還是進行的全表掃瞄;只有將其改為btree索引時才可以有效通過索引來提高效率。

因此,如果建立memory表,就需要注意sql語句的編寫確保能使用上索引;如果一定要使用範圍查詢,那麼應該建立成btree索引的表。

7 mysql 索引的設計和使用

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

索引的設計和使用

1 索引概述 1 可以定義每個表的最大索引數 至少16個 和最大索引長度 總索引長度只是256位元組 2 myisam和innodb儲存引擎的表預設建立的都是btree索引。3 mysql目前不支援函式索引 4 支援字首索引 對索引欄位的前n非字元建立索引 myisam索引的字首長度可以達到1000...

MySQL5 0中索引的設計和使用

很多開發者對mysql還是有深厚的感情,雖然現在已經被收購。至於mysql的前途到底是否會被開源組織接手還是怎麼樣?這個就暫時無解了。不過我想至少mysql的確有它的優勢。廢話就不說了。下面討論下mysql5.0中的索引的設計和使用。任何東西設計的好,那麼使用起來就順手。不過很多時候給出設計什麼規則...