mysql非同步索引 MySQL索引

2021-10-19 19:27:36 字數 1201 閱讀 9458

一、為什麼要使用索引

優化查詢,減少掃瞄的錶行數。打個比方,索引的作用就和查新華字典,字典的索引的作用的一樣的。

二、索引的型別

1、索引是在儲存引擎中實現的,而不是在伺服器層中實現的。所以,每種儲存引擎的索引都不一定完全相同,並不是所有的儲存引擎都支援所有的索引型別。

2、如果使用的是組合索引(即有多個列),需要滿足 」最左字首「 的 規則,這和索引的儲存方式 b-tree有關。

三、索引的長度

desc或者explain命令可以檢視索引的key_len:

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | extra |

| 1 | ****** | cry | all | null | null | null | null | 64733 | null |

| 1 | ****** | zd | ref | cry_brzd | cry_brzd | 153 | hospitalinfection.cry.zyid | 1 | null |

key_len為:153

gbk的編碼乙個字元兩個位元組,而utf8編碼的乙個字元三個位元組。筆者的資料庫是utf8編碼,建立索引的字段型別為varchar(50):所以,長度為50*3+3=153

四、索引的不足之處

1、降低了更新表的速度,如對表進行insert、update和delete。因為更新表時,mysql不僅要儲存資料,還要儲存一下索引檔案。

2、建立索引會占用磁碟空間的索引檔案。一般情況這個問題不太嚴重,但如果你在乙個大表上建立了多種組合索引,索引檔案的會膨脹很快。

3、.......

五、其他

1、有些查詢情況下mysql 是不會使用索引的,即使建立了索引:

select * from mytable where username like'admin%' ——未使用索引

select * from mytable wheret name like'%admin'———使用了索引

2、對查詢列使用了mysql函式,或者使用了 not in 、<>等操作符。

3、全文檢索的索引可以建立在text或者varchar欄位上面,配合match...against使用,如果想要匹配中文的話,需要使用分詞器,或者通過pingyin4j這類庫將漢字轉化為拼音,再匹配 etc.

4、......

mysql 雜湊索引 MySQL索引之雜湊索引

雜湊索引 hash index 建立在雜湊表的基礎上,它只對使用了索引中的每一列的精確查詢有用。對於每一行,儲存引擎計算出了被索引的雜湊碼 hash code 它是乙個較小的值,並且有可能和其他行的雜湊碼不同。它把雜湊碼儲存在索引中,並且儲存了乙個指向雜湊表中的每一行的指標。在mysql中,只有me...

mysql主鍵索引 MySQL索引之主鍵索引

在mysql裡,主鍵索引和輔助索引分別是什麼意思,有什麼區別?上次的分享我們介紹了聚集索引和非聚集索引的區別,本次我們繼續介紹主鍵索引和輔助索引的區別。1 主鍵索引 主鍵索引,簡稱主鍵,原文是primary key,由乙個或多個列組成,用於唯一性標識資料表中的某一條記錄。乙個表可以沒有主鍵,但最多只...

mysql聚集索引 MySQL索引之聚集索引介紹

在mysql裡,聚集索引和非聚集索引分別是什麼意思,有什麼區別?在mysql中,innodb引擎表是 聚集 索引組織表 clustered index organize table 而myisam引擎表則是堆組織表 heap organize table 也有人把聚集索引稱為聚簇索引。當然了,聚集索...