mysql建立索引的技巧:1、為主鍵列建立索引;2、為經常需要排序、分組和聯合的資料列建立索引;3、為經常需要做查詢條件的資料列建立索引;4、盡量選擇區分度高的列作為索引;5、為不參與計算的列建立索引。
本篇文章將對一些比較適合建立索引的欄位進行介紹,當然也有一些建立索引要注意的情況。
推薦課程:MySQL教學
1.選擇唯一性索引
唯一性索引的值是唯一的,可以更快速的透過該索引來決定某筆記錄。例如,學生表中學號是具有唯一性的欄位。為該欄位建立唯一性索引可以很快的確定某個學生的資訊。如果使用姓名的話,可能存在同名現象,從而降低查詢速度。
2.為經常需要排序、分組和聯合操作的字段(列)建立索引
經常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作會浪費很多時間。如果為其建立索引,可以有效地避免排序操作。
3.為經常需要做查詢條件的欄位(列)建立索引
如果某個欄位經常用來做查詢條件,那麼該欄位的查詢速度會影響整個資料表的查詢速度。因此,為這樣的欄位建立索引,可以提高整個表的查詢速度。
4.限制索引的數目
索引的數目不是越多越好。每個索引都需要佔用磁碟空間,索引越多,需要的磁碟空間就越大。修改表格時,對索引的重構和更新很麻煩。越多的索引,會使更新表變得很浪費時間。
5.盡量使用資料量少的索引
如果索引的值很長,那麼查詢的速度會受到影響。例如,對一個CHAR(100)類型的欄位進行全文檢索需要的時間肯定要比對CHAR(10)類型的欄位所需的時間要多。
6.盡量使用前綴來索引
如果索引欄位的值很長,最好使用值的前綴來索引。例如,TEXT和BLOG類型的字段,進行全文檢索會很浪費時間。如果只檢索欄位的前面的若干個字符,這樣可以提高檢索速度。
7. 盡量選擇區分度高的欄位作為索引
區分度的公式是count(distinct col)/count(*),表示欄位不重複的比例,比例越大我們掃描的記錄數越少,唯一鍵的區分度是1,而一些狀態、性別字段可能在大數據面前區分度就是0,那可能有人會問,這個比例有什麼經驗值嗎?使用場景不同,這個值也很難確定,一般需要join的字段我們都要求是0.1以上,即平均1條掃描10條記錄
8 .索引列不能參與計算,保持列「乾淨」
例如from_unixtime(create_time) = '2014-05-29'就不能使用到索引,原因很簡單,b 樹中存的都是資料表中的欄位值,但進行檢索時,需要把所有元素都套用函數才能比較,顯然成本太大。所以語句應該寫成create_time = unix_timestamp('2014-05-29');
9 .盡量的擴充索引,不要新索引
#例如表中已經有a的索引,現在要加(a,b)的索引,那麼只需要修改原來的索引即可
注意:選擇索引的最終目的是為了使查詢的速度變快。上面給出的原則是最基本的準則,但不能拘泥於上面的準則。讀者要在以後的學習和工作中進行不斷的實踐。根據應用的實際情況進行分析和判斷,選擇最適合的索引方式。
以上是mysql建立索引有什麼技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!