數據庫索引的設計原則
為了使索引的使用效率更高,在創建索引時,必須考慮在哪些字段上創建索引和創建什麽類型的索引。
那麽索引設計原則又是怎樣的?
建表時一定要有主鍵,如果相關列可以作為主鍵,做一個無關列
1.選擇的唯一性
唯一性索引的值是唯一的,可以更快速的通過該索引來確定某條記錄。
例如,學生表中學號是具有唯一性的字段。為該字段建立唯一性索引可以很快的確定某個學生的信息。
如果使用姓名的話,可能存在同名現象,從而降低查詢速度。
主鍵索引和唯一鍵索引,在查詢中使用是效率最高的。
註意:如果重復值較多,可以考慮采用聯合索引
2.為經常需要排序,分組和聯合操作的字段建立索引
經常需要ORDER BY、GROUP BY,join on等操作的字段,排序操作會浪費很多時間。
3.為常作為where查詢條件的字段建立索引
如果某個字段經常用來做查詢條件,那麽該字段的查詢速度會影響整個表的查詢速度。因此,
為這樣的字段建立索引,可以提高整個表的查詢速度。
3.1 經常查詢
3.2 列值的重復值少(業務層面調整)
註:如果經常作為條件的列,重復值特別多,可以建立聯合索引。
4.盡量使用前綴來索引
如果索引字段的值很長,最好使用值的前綴來索引。例如,TEXT和BLOG類型的字段,進行全文檢索
會很浪費時間。如果只檢索字段的前面的若幹個字符,這樣可以提高檢索速度。
------------------------以上的是重點關註的,以下是能保證則保證的--------------------
5.限制索引的數目
索引的數目不是越多越好。每個索引都需要占用磁盤空間,索引越多,需要的磁盤空間就越大。
修改表時,對索引的重構和更新很麻煩。越多的索引,會使更新表變得很浪費時間。
6.刪除不再使用或者很少使用的索引(percona toolkit)
表中的數據被大量更新,或者數據的使用方式被改變後,原有的一些索引可能不再需要。數據庫管理
員應當定期找出這些索引,將它們刪除,從而減少索引對更新操作的影響。
7.大表加索引,要在業務不繁忙期間操作
建索引原則
(1) 必須要有主鍵,如果沒有可以做為主鍵條件的列,創建無關列
(2) 經常做為where條件列 order by group by join on的條件(業務:產品功能+用戶行為)
(4) 列值長度較長的索引列,我們建議使用前綴索引.
(5) 降低索引條目,一方面不要創建沒用索引,不常使用的索引清理,percona toolkit
(6) 索引維護要避開業務繁忙期
業務:
1.產品的功能
2.用戶的行為
數據庫索引的設計原則