mysql建立索引的原則

在mysql中使用索引的原則有如下幾點:mysql

 

一、 對於查詢頻率高的字段建立索引;sql

 

二、 對排序、分組、聯合查詢頻率高的字段建立索引;數據庫

 

三、 索引的數目不宜太多.net

      緣由:a、每建立一個索引都會佔用相應的物理控件;blog

            b、過多的索引會致使insert、update、delete語句的執行效率下降;排序

 

四、若在實際中,須要將多個列設置索引時,能夠採用多列索引索引

      如:某個表(假設表名爲Student),存在多個字段(StudentNo, StudentName, Sex, Address, Phone, BirthDate),其中須要對StudentNo,StudentName字段進行查詢,對Sex字段進行分組,對BirthDate字段進行排序,此時能夠建立多列索引get

      index index_name (StudentNo, StudentName, Sex, BirthDate);      #index_name爲索引名class

      在上面的語句中只建立了一個索引,可是對4個字段都賦予了索引的功能。效率

       建立多列索引,須要遵循BTree類型,

       即第一列使用時,才啓用索引。

       在上面的建立語句中,只有mysql語句在使用到StudentNo字段時,索引纔會被啓用。

       如:     select * from Student where StudentNo = 1000;      #使用到了StudentNo字段,索引被啓用。

       可使用explain檢測索引是否被啓用

        如:explain select * from Student where StudentNo = 1000;

 

五、選擇惟一性索引

        惟一性索引的值是惟一的,能夠更快速的經過該索引來肯定某條記錄。例如,學生表中學號是具備惟一性的字段。爲該字段創建惟一性索引能夠很快的肯定某個學生的信息。若是使用姓名的話,可能存在同名現象,從而下降查詢速度。

 

六、儘可能使用數據量少的索引

       若是索引的值很長,那麼查詢的速度會受到影響。例如,對一個CHAR(100)類型的字段進行全文檢索須要的時間確定要比對CHAR(10)類型的字段須要的時間要多。

 

七、儘可能使用前綴來索引

     若是索引字段的值很長,最好使用值的前綴來索引。例如,TEXT和BLOG類型的字段,進行全文檢索會很浪費時間。若是隻檢索字段的前面的若干個字符,這樣能夠提升檢索速度。

 

八、刪除再也不使用或者不多使用的索引.

     表中的數據被大量更新,或者數據的使用方式被改變後,原有的一些索引可能再也不須要。數據庫管理員應當按期找出這些索引,將它們刪除,從而減小索引對更新操做的影響

 

PS:部份內容借鑑與https://blog.csdn.net/csdnones/article/details/50412603

相關文章
相關標籤/搜索