MySQL 索引的使用

2022-03-16 06:01:18 字數 1017 閱讀 5558

一、or 的使用

(1)mysql版本大於 5.x 的會使用 index merge 功能,即可以將多個單列索引集合起來使用,不過在查詢時使用 or 的話,引擎為 myisam 的會開啟 index merge,而 innodb 的則不會開啟,從而導致全表搜尋;

二、order 的使用

不是 order by 乙個設定為索引的字段,這個查詢就一定會用到 index ,搞不好會是 using filesort,有幾個地方需注意:

(1)如果沒有 where 條件,查詢的字段沒有覆蓋到索引(多出乙個也不行),order 就會 using filesort,所以選擇的字段最好有設定索引,這樣才會 using index 來執行;

(2)如果有 where 條件,比如 where type = 1 order by type asc,type 為索引,order 會使用到索引; 如果 where type = 1 order by name asc,即使 type、user 都是索引,也無法使用到索引,依舊是 using filesort;

(3)在沒有where 查詢的時候 order by id(主鍵,必須是主鍵), 有 where 查詢的時候,order by (索引) 字段。

三、索引用於函式

(1)where 中字段若用於函式,索引無法起到作用;

四、索引 範圍查詢

(1)!=、>=、>、<、<=、in、like 等符號使用時均屬於範圍查詢,最左字首原則在範圍查詢的字段後面無法起作用;

五、索引長度計算及優化

1、所有的索引字段,如果沒有設定not null,則需要加乙個位元組。

2、定長字段,int佔四個位元組、date佔三個位元組、char(n)佔n個字元。

3、對於變成欄位varchar(n),則有n個字元+兩個位元組。

4、不同的字符集,乙個字元占用的位元組數不同。latin1編碼的,乙個字元占用乙個位元組,gbk編碼的,乙個字元占用兩個位元組,utf8編碼的,乙個字元占用三個位元組。

5、索引長度直接影響索引檔案的大小,影響增刪改的速度,並間接影響查詢速度(占用記憶體多)

mysql 索引的使用

一 什麼是索引!學乙個技術的時候,首先要知道他是什麼,他的作用是什麼,他能幹什麼 索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b 樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就...

mysql索引的使用

索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可以有多個單列索引,但這不是組合索引。組合索引,即乙個索包含多個列。1 普通索引 這是最基本的索引,它沒有任何限制。它有以下幾種建立方式 建立索引 create index indexname on tablename column ...

mysql索引的使用

最近在學mysql,由於對索引沒怎麼接觸過,故做下筆記已被後面參考.假設我們有個公司表沒有建立索引,公司有個編號,當我們要查詢編號為13的公司 其中表中存在很多記錄關於同乙個公司的 由於公司編號沒有排序的,要查詢該公司資訊必須掃瞄全表.如果我們建立了索引,編號會排好序,當我們查詢13的公司,資料庫快...