mysql索引结构优缺点_mysql索引优缺点及注意事项
優點
有了索引.對于記錄數量很多的表,可以提高查詢速度.
缺點
索引是占用空間的.
索引會影響update insert delete速度
ALERT!!!
1??? 索引要創建在where和join用到的字段上.
2??? 以下操作符號可以應用索引
:,>=,BETWEEN,IN,LIKE不以%_開頭
以下需要注意不使用索引
<>, NOT IN, LIKE %_開頭
<> 可以用 a>1 or a<3 代替,NOT IN 可以用NOT exists代替
3??? 在使用max() min()時最好加上索引.
4??? 單索引要創建在確實需要的地方.
多列索引 有最佳左前綴特性 所以盡量左邊的字段是最常用的.
5
索引不會包括有NULL值,就是有NULL,索引就失效
6
使用短索引,一個字段字太多,可以建立部分索引,只取前十個字.節約空間.
7
不要在列上運算.例如:where MD5(“password”) = “myz”
8
explain select * from myz 來測試一下語句的效率…
輸入 explain select * from customer; 后,出現一張表,個行的意思如下:
table-顯示此行數據屬于哪張表;
type-重要的一列,顯示使用了何種連接,從好到差依次為const、eq_ref、ref、range、index、all;possible_keys-可以應用在這張表中的索引,如果為null,則表示沒有可用索引;key-實際使用的索引,如為null,表示沒有用到索引;key_len-索引的長度,在不損失精確度的情況下,越短越好;ref-顯示索引的哪一列被使用了,如果可能的話,是個常數;rows-返回請求數據的行數;extra-關于mysql如何解析查詢的額外信息,下面會詳細說明。
type的描述:
system-表只有一行,這是const連接類型的特例;const-表中一個記錄的最大值能夠匹配這個查詢(索引可以是主鍵或唯一索引)。因為只有一行,這個值實際就是常數,因為mysql先讀這個值,再把它當作常數對待;eq_ref-從前面的表中,對每一個記錄的聯合都從表中讀取一個記錄。在查詢使用索引為主鍵或唯一索引的全部時使用;ref-只有使用了不是主鍵或唯一索引的部分時發生。對于前面表的每一行聯合,全部記錄都將從表中讀出,這個連接類型嚴重依賴索引匹配記錄的多少-越少越好;range-使用索引返回一個范圍中的行,比如使用>或
extra行的描述:
distinct-mysql找到了域行聯合匹配的行,就不再搜索了;
not exists-mysql優化了left join,一旦找到了匹配left join的行,就不再搜索了;
range checked for each-沒找到理想的索引,一次對于從前面表中來的每一個行組合;
record(index map: #)-檢查使用哪個索引,并用它從表中返回行,這是使用索引最慢的一種;
using filesort-看到這個就需要優化查詢了,mysql需要額外的步驟來發現如何對返回的行排序。他根據連接類型以及存儲排序鍵值和匹配條件的全部行的行指針來排序全部行。
using index-列數據是從單單使用了索引中的信息而沒有讀取實際行的表返回的,這發生在對表的全部的請求列都是同一個索引時;
using temporary-看到這個就需要優化查詢了,mysql需要創建一個臨時表來查詢存儲結果,這通常發生在多不同的列表進行order by時,而不是group by;
where used-使用了where從句來限制哪些行將與下一張表匹配或是返回給用戶。如不想返回表中用的全部行,并連接類型是all或index,這就會發生,也可能是查詢有問題。
9
查看索引信息
show index from tablename;
覺得文章有用?立即:
和朋友一起 共學習 共進步!
猜您喜歡
總結
以上是生活随笔為你收集整理的mysql索引结构优缺点_mysql索引优缺点及注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows分屏_windows内到底
- 下一篇: mdl格式是什么软件生成的_Mac 上有