PHP面試之?dāng)?shù)據(jù)庫—創(chuàng)建高性能索引

真題

簡單描述MySQL中,索引、主鍵缰揪、唯一索引陨享、聯(lián)合索引的區(qū)別,對數(shù)據(jù)庫的性能有什么影響钝腺?

MySQL索引的基礎(chǔ)和類型

索引:類似于書籍的目錄抛姑,想找到一本書的某個特定的主題,需要先找到書的目錄艳狐,定位對應(yīng)的頁碼定硝。

MySQL中存儲引擎使用類似的方式進行查詢,先去索引中查找對應(yīng)的值毫目,然后根據(jù)匹配的索引找到對應(yīng)的數(shù)據(jù)行蔬啡。

索引對性能的影響:

  • 大大減少服務(wù)器需要掃描的數(shù)據(jù)量。
  • 幫助服務(wù)器避免排序和臨時表镀虐。
  • 將隨機I/O變順序I/O箱蟆。
  • 大大提高查詢速度,降低寫的速度刮便、占用磁盤空猜。

索引的使用場景:

  • 對非常小的表,大部分情況下全表掃描效率更高恨旱。
  • 對中大型表辈毯,索引非常有效
  • 特大型的表,建立和使用索引的代價隨著增長搜贤,可以使用分區(qū)技術(shù)來解決谆沃。

索引的類型

索引都是實現(xiàn)在存儲引擎層的。

  • 普通索引:最基本的索引仪芒,沒有任何約束
  • 唯一索引:與普通索引類似管毙,但具有唯一性約束
  • 主鍵索引:特殊的唯一索引腿椎,不允許有空值
  • 組合索引:將多個列組合在一起創(chuàng)建索引,可以覆蓋多個列
  • 外鍵索引:只有InnoDB類型的表才可以使用外鍵索引夭咬,保證數(shù)據(jù)的一致性啃炸、完整性和實現(xiàn)級聯(lián)操作
  • 全文索引:MySQL自帶的全文索引只能用于MyISAM,并且只能對英文進行全文檢索卓舵,一般使用全文索引引擎

主鍵索引和唯一索引的去別:

  • 一個表只能有一個主鍵索引南用,可以有多個唯一索引
  • 主鍵索引一定是唯一索引,唯一索引不是主鍵索引
  • 主鍵和外鍵構(gòu)成參照完整性約束掏湾,防止數(shù)據(jù)不一致

延伸:MySQL索引的創(chuàng)建原則

  • 最適合索引的列是出現(xiàn)在where子句中的列裹虫,或連接子句中的列,而不是出現(xiàn)在select關(guān)鍵字后的列融击;
  • 索引列的基數(shù)越大筑公,索引效果越好;
  • 對字符串進行索引尊浪,應(yīng)該定制一個前綴長度匣屡,可以節(jié)省大量的索引空間;
  • 根據(jù)情況創(chuàng)建復(fù)合索引拇涤,復(fù)合索引可以提高查詢效率捣作;
  • 避免創(chuàng)建過多的索引,索引會額外占用磁盤空間鹅士,降低寫操作效率券躁;
  • 主鍵盡可能選擇較短的數(shù)據(jù)類型,可以有效減少索引的磁盤占用提高查詢效率

延伸:MySQL索引的注意事項

  • 復(fù)合索引遵循前綴原則掉盅;
  • like查詢也拜,%不能在前,可以使用全文索引趾痘;
  • column is null可以使用索引搪泳;
  • 如果MySQL估計使用索引比全表掃描更慢,會放棄使用索引扼脐;
  • 列類型是字符串類型岸军,查詢時一定要給值加引號,否則索引失效瓦侮。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末艰赞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子肚吏,更是在濱河造成了極大的恐慌方妖,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罚攀,死亡現(xiàn)場離奇詭異党觅,居然都是意外死亡雌澄,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門杯瞻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來镐牺,“玉大人,你說我怎么就攤上這事魁莉〔墙В” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵旗唁,是天一觀的道長畦浓。 經(jīng)常有香客問我,道長检疫,這世上最難降的妖魔是什么讶请? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮屎媳,結(jié)果婚禮上夺溢,老公的妹妹穿的比我還像新娘。我一直安慰自己剿牺,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布环壤。 她就那樣靜靜地躺著晒来,像睡著了一般。 火紅的嫁衣襯著肌膚如雪郑现。 梳的紋絲不亂的頭發(fā)上湃崩,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音接箫,去河邊找鬼攒读。 笑死,一個胖子當(dāng)著我的面吹牛辛友,可吹牛的內(nèi)容都是我干的薄扁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼废累,長吁一口氣:“原來是場噩夢啊……” “哼邓梅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起邑滨,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤日缨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后掖看,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匣距,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡面哥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了毅待。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尚卫。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖恩静,靈堂內(nèi)的尸體忽然破棺而出焕毫,到底是詐尸還是另有隱情,我是刑警寧澤驶乾,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布邑飒,位于F島的核電站,受9級特大地震影響级乐,放射性物質(zhì)發(fā)生泄漏疙咸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一风科、第九天 我趴在偏房一處隱蔽的房頂上張望撒轮。 院中可真熱鬧,春花似錦贼穆、人聲如沸题山。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽顶瞳。三九已至,卻和暖如春愕秫,著一層夾襖步出監(jiān)牢的瞬間慨菱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工戴甩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留符喝,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓甜孤,卻偏偏與公主長得像协饲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缴川,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容