mysql索引優缺點及注意事項

來源:互聯網
上載者:User

著作權聲明:原創作品,允許轉載,轉載時請務必以超連結形式標明文章原始出版、作者資訊和本聲明。否則將追究法律責任。http://blog.csdn.net/mayongzhan - 馬永占,myz,mayongzhan

優點 有了索引.對於記錄數量很多的表,可以提高查詢速度. 缺點 索引是佔用空間的. 索引會影響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單索引要建立在確實需要的地方.多列索引 有最佳左首碼特性 所以盡量左邊的欄位是最常用的. 6索引不會包括有NULL值,就是有NULL,索引就失效 7使用短索引,一個欄位字太多,可以建立部分索引,只取前十個字.節約空間. 8不要在列上運算.例如:where MD5("password") = "myz" 9explain 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-使用索引返回一個範圍中的行,比如使用>或<尋找時發生;index-這個連線類型對前面的表中的每一個記錄聯合進行完全掃描(比all好,因為索引一般小於表資料);all-這個連線類型多前面的表中的每一個記錄聯合進行完全掃描,這個比較糟糕,應該盡量避免。 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,這就會發生,也可能是查詢有問題。 10查看索引資訊show index from tablename; 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.