1.where字句的查詢條件裡有 not in 、<>、!=,mysql將無法使用索引;
2.where字句的查詢條件裡使用了函式,mysql將無法使用索引
3.在join操作中,mysql只有在主鍵和外來鍵的資料型別相同時才能使用索引,否則即使建立了索引也不會使用
4.使用了比較操作符like和regexp,mysql只有在搜尋模板的第乙個字元不是萬用字元的情況下才能使用索引。比如說,如果查詢條件是like 'abc%',mysql將使用索引;如果條件是like '%abc'或者'_abc%',mysql將不使用索引。
5.在order by操作中,mysql只有在排序條件不是乙個查詢條件表示式的情況下才使用索引。儘管如此,在涉及多個資料表的查詢裡,即使有索引可用,那些索引在加快order by操作方面也沒什麼作用。
6.如果某個資料列裡包含著許多重複的值,就算為它建立了索引也不會有很好的效果。比如說,如果某個資料列裡包含了淨是些諸如「0/1」或「y/n」等值,就沒有必要為它建立乙個索引。
7.使用短索引: 對串列進行索引,如果可以就應該指定乙個字首長度。例如,如果有乙個char(255)的列,如果在前10個或20個字元內,多數值是唯一的,那麼就不要對整個列進行索引。短索引不僅可以提高查詢速度而且可以節省磁碟空間和i/o操作。(針對hash的索引方式,對每個值都做hash值儲存i/o操作儲存索引資訊)
8.如果條件中有or(並且其中有or的條件是不帶索引的),即使其中有條件帶索引也不會使用(這也是為什麼盡量少用or的原因)。注意:要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引
9.如果列型別是字串,那一定要在條件中將資料使用引號引用起來,否則不使用索引
10.對於那些定義為text、image和bit資料型別的列不應該增加索引。因為這些列的資料量要麼相當大,要麼取值很少。
11.只要列中包含有null值,都將不會被包含在索引中,復合索引中只要有一列含有null值,那麼這一列對於此符合索引就是無效的。
12.組合索引之最左字首:顧名思義,就是最左優先,上例中我們建立了name_age_course多列索引,相當於建立了(name)單列索引,(name,age)組合索引以及(name,age,course)組合索引。在單獨使用(age)、(age,course)等條件下索引無效
補充:確認索引是否已使用:explain select username from user where id=1
結果為:
注意: 通過key就能判斷索引是否執行
1 MySQL資料庫索引
索引 index 幫助mysql高效獲取資料的資料結構 有序 最常見的採用得b 樹 平衡搜尋樹 儲存索引。索引的優勢 提高資料檢索的效率,降低資料庫的io成本。通過索引列對資料進行排序,降低資料排序的成本,降低cpu的消耗。索引的劣勢 索引也占用一定的記憶體空間。雖然索引提高了查詢效率,同時卻也降低...
1 Mysql資料庫的安裝
1 開啟mysql 2 選擇安裝的元件資訊。3 伺服器軟體安裝目錄 4 資料目錄存放位置 5 點選下一步進入 mysql 資料庫軟體的安裝步驟。6 開始安裝資料庫 7 安裝好資料庫之後進行相應的 mysql 資料庫的配置 8 選擇 finish 出現下列介面進入配置嚮導。9 選擇下一步,現在詳細配置...
1 MySQL資料型別簡介
資料型別 data type 是指系統中所允許的資料的型別。mysql 資料型別定義了列中可以儲存什麼資料以及該資料怎樣儲存的規則。資料庫中的每個列都應該有適當的資料型別,用於限制或允許該列中儲存的資料。例如,列中儲存的為數字,則相應的資料型別應該為數值型別。如果使用錯誤的資料型別可能會嚴重影響應用...