mysql建索引的幾大原則
1.選擇唯一性索引
唯一性索引的值是唯一的,可以更快速的通過該索引來確定某條記錄。例如,學生表中學號是具有唯一性的欄位。為該欄位建立唯一性索引可以很快的確定某個學生的資訊。如果使用姓名的話,可能存在同名現象,從而降低查詢速度。
2.為經常需要排序、分組和聯合操作的欄位建立索引
經常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的欄位,排序操作會浪費很多時間。如果為其建立索引,可以有效地避免排序操作。
3.為常作為查詢條件的欄位建立索引
如果某個欄位經常用來做查詢條件,那麼該欄位的查詢速度會影響整個表的查詢速度。因此,為這樣的欄位建立索引,可以提高整個表的查詢速度。
4.限制索引的數目
索引的數目不是越多越好。每個索引都需要佔用磁碟空間,索引越多,需要的磁碟空間就越大。修改表時,對索引的重構和更新很麻煩。越多的索引,會使更新表變得很浪費時間。
5.儘量使用資料量少的索引
如果索引的值很長,那麼查詢的速度會受到影響。例如,對一個CHAR(100)型別的欄位進行全文檢索需要的時間肯定要比對CHAR(10)型別的欄位需要的時間要多。
6.儘量使用字首來索引
如果索引欄位的值很長,最好使用值的字首來索引。例如,TEXT和BLOG型別的欄位,進行全文檢索會很浪費時間。如果只檢索欄位的前面的若干個字元,這樣可以提高檢索速度。
7.刪除不再使用或者很少使用的索引
表中的資料被大量更新,或者資料的使用方式被改變後,原有的一些索引可能不再需要。資料庫管理員應當定期找出這些索引,將它們刪除,從而減少索引對更新操作的影響。
8 . 最左字首匹配原則,非常重要的原則。
MySQL會一直向右匹配直到遇到範圍查詢(>、<、between、like)就停止匹配,比如a 1=”” and=”” b=”2” c=”“> 3 and d = 4 如果建立(a,b,c,d)順序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引則都可以用到,a,b,d的順序可以任意調整。
9 .=和in可以亂序。
比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意順序,mysql的查詢優化器會幫你優化成索引可以識別的形式
10 . 儘量選擇區分度高的列作為索引。
區分度的公式是count(distinct col)/count(*),表示欄位不重複的比例,比例越大我們掃描的記錄數越少,唯一鍵的區分度是1,而一些狀態、性別欄位可能在大資料面前區分度就 是0,那可能有人會問,這個比例有什麼經驗值嗎?使用場景不同,這個值也很難確定,一般需要join的欄位我們都要求是0.1以上,即平均1條掃描10條 記錄
11 .索引列不能參與計算,保持列“乾淨”。
比如from_unixtime(create_time) = ’2014-05-29’就不能使用到索引,原因很簡單,b+樹中存的都是資料表中的欄位值,但進行檢索時,需要把所有元素都應用函式才能比較,顯然成本 太大。所以語句應該寫成create_time = unix_timestamp(’2014-05-29’);
12 .儘量的擴充套件索引,不要新建索引。
比如表中已經有a的索引,現在要加(a,b)的索引,那麼只需要修改原來的索引即可
注意:選擇索引的最終目的是為了使查詢的速度變快。上面給出的原則是最基本的準則,但不能拘泥於上面的準則。讀者要在以後的學習和工作中進行不斷的實踐。根據應用的實際情況進行分析和判斷,選擇最合適的索引方式。
相關文章
- MySQL索引(二):建索引的原則MySql索引
- 設計模式中的幾大原則總結設計模式
- MySQL資料庫的索引原理、與慢SQL優化的5大原則MySql資料庫索引優化
- C++基礎::類設計的幾大原則C++
- MySQL 索引的設計原則MySql索引
- MySQL索引建立原則MySql索引
- mysql 索引設計原則MySql索引
- MySQL 分割槽建索引MySql索引
- MySQL建庫建表索引規範MySql索引
- Mysql中聯合索引的最左匹配原則MySql索引
- MySQL索引選擇及規則整理MySql索引
- Mysql研磨之設計索引原則MySql索引
- MySQL 5.6建索引的正確姿勢MySql索引
- 六大原則
- 設計模式“6”大原則!設計模式
- 「 MySQL高階篇 」MySQL索引原理,設計原則MySql索引
- MySQL-08.索引的建立和設計原則MySql索引
- 遊戲設計的三大原則遊戲設計
- 施密特:谷歌的五大原則谷歌
- 軟體介面設計的20大原則
- 優秀程式設計的18大原則程式設計
- 工作的六大原則(收藏)
- 對線面試官:Mysql組合索引的生效規則面試MySql索引
- mysql對資料庫表建索引MySql資料庫索引
- Oracle索引限制、實用準則及其建議<轉>Oracle索引
- MySQL組合索引和最左匹配原則MySql索引
- MySQL如何建立一個好索引?建立索引的5條建議【宇哥帶你玩轉MySQL 索引篇(三)】MySql索引
- 設計模式的七大原則設計模式
- 物件導向的六大原則物件
- HACCP的七大原則(轉載)
- 設計模式的六大原則設計模式
- 簡單介紹MySQL索引失效的幾種情況MySql索引
- 【整理】組建MySQL叢集的幾種方案MySql
- 設計模式6大原則設計模式
- 需求分析六大原則
- mysql優化 | 儲存引擎,建表,索引,sql的優化建議MySql優化儲存引擎索引
- 設計模式的七大原則(5) --開閉原則設計模式
- 我面試幾乎必問:你設計索引的原則是什麼?怎麼避免索引失效?面試索引