一、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的公司,資料庫快...