建立索引的原則

1.選擇唯一性索引

唯一性索引的值是唯一的漂坏,可以更快速的通過該索引來確定某條記錄蛇券。例如,學生表中學號是具有唯一性的字段樊拓。為該字段建立唯一性索引可以很快的確定某個學生的信息纠亚。如果使用姓名的話,可能存在同名現(xiàn)象筋夏,從而降低查詢速度蒂胞。

2.為經常需要排序、分組和聯(lián)合操作的字段建立索引

經常需要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的查詢優(yōu)化器會幫你優(yōu)化成索引可以識別的形式

10 . 盡量選擇區(qū)分度高的列作為索引。

區(qū)分度的公式是count(distinct col)/count(*)肝匆,表示字段不重復的比例粒蜈,比例越大我們掃描的記錄數越少,唯一鍵的區(qū)分度是1旗国,而一些狀態(tài)枯怖、性別字段可能在大數據面前區(qū)分度就 是0,那可能有人會問能曾,這個比例有什么經驗值嗎度硝?使用場景不同,這個值也很難確定寿冕,一般需要join的字段我們都要求是0.1以上蕊程,即平均1條掃描10條 記錄

11 .索引列不能參與計算,保持列“干凈”驼唱。

比如from_unixtime(create_time) = ’2014-05-29’就不能使用到索引藻茂,原因很簡單,b+樹中存的都是數據表中的字段值玫恳,但進行檢索時辨赐,需要把所有元素都應用函數才能比較,顯然成本 太大京办。所以語句應該寫成create_time = unix_timestamp(’2014-05-29’);

12 .盡量的擴展索引掀序,不要新建索引。
比如表中已經有a的索引惭婿,現(xiàn)在要加(a,b)的索引不恭,那么只需要修改原來的索引即可

注意:選擇索引的最終目的是為了使查詢的速度變快。上面給出的原則是最基本的準則财饥,但不能拘泥于上面的準則换吧。讀者要在以后的學習和工作中進行不斷的實踐。根據應用的實際情況進行分析和判斷钥星,選擇最合適的索引方式沾瓦。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子暴拄,更是在濱河造成了極大的恐慌漓滔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乖篷,死亡現(xiàn)場離奇詭異响驴,居然都是意外死亡,警方通過查閱死者的電腦和手機撕蔼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門豁鲤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鲸沮,你說我怎么就攤上這事琳骡。” “怎么了讼溺?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵楣号,是天一觀的道長。 經常有香客問我怒坯,道長炫狱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任剔猿,我火速辦了婚禮视译,結果婚禮上,老公的妹妹穿的比我還像新娘归敬。我一直安慰自己酷含,他們只是感情好,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布汪茧。 她就那樣靜靜地躺著椅亚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪陆爽。 梳的紋絲不亂的頭發(fā)上什往,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天扳缕,我揣著相機與錄音慌闭,去河邊找鬼。 笑死躯舔,一個胖子當著我的面吹牛驴剔,可吹牛的內容都是我干的。 我是一名探鬼主播粥庄,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼丧失,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了惜互?” 一聲冷哼從身側響起布讹,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤琳拭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后描验,有當地人在樹林里發(fā)現(xiàn)了一具尸體白嘁,經...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年膘流,在試婚紗的時候發(fā)現(xiàn)自己被綠了絮缅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡呼股,死狀恐怖耕魄,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情彭谁,我是刑警寧澤吸奴,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站缠局,受9級特大地震影響奄抽,放射性物質發(fā)生泄漏。R本人自食惡果不足惜甩鳄,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一逞度、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧妙啃,春花似錦档泽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至燥滑,卻和暖如春渐北,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背铭拧。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工赃蛛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人搀菩。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓呕臂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肪跋。 傳聞我的和親對象是個殘疾皇子歧蒋,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內容