2020-08-27

MySQL索引

1陆错、索引

索引(MySQL中也叫"key鍵"):是存儲引擎快速查詢記錄的一種數(shù)據(jù)結(jié)構(gòu)

2魄揉、索引存儲類型

InnoDB引擎使用的是B+Tree

3剪侮、索引類型

(1)主鍵索引(PRIMARY KEY):值必須唯一,不允許有空值洛退,一般是在創(chuàng)建表的同時創(chuàng)建主鍵索引瓣俯,一個表只能有一個主鍵索引
(2)唯一索引(UNIQUE):唯一索引列的值必須唯一,但允許有空值
ALTER TABLE 表名 ADD UNIQUE(字段名稱)
(3)普通索引(INDEX):最基本的索引兵怯,沒有任何限制
ALTER TABLE 表名 ADD INDEX 索引名稱(字段名稱)
(4)組合索引(INDEX):一個索引包含多個列彩匕,多用于避免回表查詢
ALTER TABLE 表名 ADD INDEX 索引名稱(字段名稱1,字段名稱2媒区,字段名稱N)
(5)全文索引(FULLTEXT):大文本中進(jìn)行全文檢索驼仪,是目前搜索引擎使用的一種關(guān)鍵技術(shù)
ALTER TABLE 表名 ADD INDEX FULLTEXT(字段名稱)

4、查看指定表的索引

show index from 表名袜漩;

5绪爸、索引的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):索引大大減小了服務(wù)器需要掃描的數(shù)據(jù)量,可以幫助服務(wù)器避免排序和臨時表
缺點(diǎn):
①降低了更新表的速度宙攻,如對表進(jìn)行INSERT奠货、UPDATE和DELETE。因?yàn)楦卤頃r座掘,MySQL不僅要保存數(shù)據(jù)递惋,還要保存索引文件
②建立索引會占用磁盤空間的索引文件柔滔。一般情況這個問題不太嚴(yán)重,但如果在一個大表上創(chuàng)建多種組合索引萍虽,索引文件會膨脹很快
③如果某個數(shù)據(jù)列包含許多重復(fù)的內(nèi)容睛廊,為它建立索引就沒有太大的實(shí)際效果
④對于非常小的表,大部分情況下全表掃描更高效

6杉编、索引的設(shè)計(jì)原則

(1)適合索引的列是出現(xiàn)在where子句的列
(2)更新十分頻繁的字段不宜建立索引:因?yàn)楦虏僮鲿兏麭+樹超全,重建索引。這個過程是十分消耗數(shù)據(jù)庫性能的
(3)區(qū)分度不大的字段不宜建立索引:類似于性別這種區(qū)分度不大的字段王财,建立索引的意義不大卵迂。因?yàn)椴荒苡行н^濾數(shù)據(jù),性能和全表掃描相當(dāng)绒净。另外返回?cái)?shù)據(jù)的比例在30%以外的情況下见咒,優(yōu)化器不會選擇使用索引
(4)業(yè)務(wù)上具有唯一特性的字段,即使是多個字段的組合挂疆,也必須建成唯一索引改览。雖然唯一索引會影響insert的速度,但是對于查詢的速度提升是非常明顯的缤言。即使在應(yīng)用層做了非常完善的校驗(yàn)控制宝当,只要沒有唯一索引,在并發(fā)的情況下胆萧,依然有臟數(shù)據(jù)產(chǎn)生
(5)多表關(guān)聯(lián)時庆揩,要保證關(guān)聯(lián)字段上一定有索引(外鍵字段要加索引)

7、 索引優(yōu)化規(guī)則

(1)如果MySQL估計(jì)使用索引比全表掃描還慢跌穗,則不會使用索引订晌。【返回?cái)?shù)據(jù)的比例是重要指標(biāo)蚌吸,比例越低越容易命中索引锈拨。記住這個范圍值:30%】
(2)前導(dǎo)模糊查詢不能命中索引【select * from user where name like '%s%'】
(3)非前導(dǎo)模糊查詢則可以使用索引,可優(yōu)化為使用非前導(dǎo)模糊查詢
(4)數(shù)據(jù)類型出現(xiàn)隱式轉(zhuǎn)換的時候不會命中索引羹唠,特別是當(dāng)列類型是字符串奕枢,一定要將字符常量值用引號引起來
(5)復(fù)合索引的情況下,查詢條件不包含索引列最左邊部分(不滿足最左原則)佩微,不會命中復(fù)合索引
(6)union,in,or都能夠命中索引缝彬,建議使用in
(7)用or分割開的條件,如果or前的條件中列有索引哺眯,而后面的列中沒有索引跌造,那么涉及到的索引都不會被用到
(8)負(fù)向條件查詢不能使用索引,可以優(yōu)化為in查詢
(9)數(shù)據(jù)庫執(zhí)行計(jì)算或函數(shù)不會命中索引

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市壳贪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寝杖,老刑警劉巖违施,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瑟幕,居然都是意外死亡磕蒲,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門只盹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辣往,“玉大人,你說我怎么就攤上這事殖卑≌鞠鳎” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵孵稽,是天一觀的道長许起。 經(jīng)常有香客問我,道長菩鲜,這世上最難降的妖魔是什么园细? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮接校,結(jié)果婚禮上猛频,老公的妹妹穿的比我還像新娘。我一直安慰自己蛛勉,他們只是感情好鹿寻,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著董习,像睡著了一般烈和。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上皿淋,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天招刹,我揣著相機(jī)與錄音,去河邊找鬼窝趣。 笑死疯暑,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的哑舒。 我是一名探鬼主播妇拯,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了越锈?” 一聲冷哼從身側(cè)響起仗嗦,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎甘凭,沒想到半個月后稀拐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丹弱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年德撬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躲胳。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜓洪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坯苹,到底是詐尸還是另有隱情隆檀,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布北滥,位于F島的核電站刚操,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏再芋。R本人自食惡果不足惜菊霜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望济赎。 院中可真熱鬧鉴逞,春花似錦、人聲如沸司训。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽壳猜。三九已至勾徽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間统扳,已是汗流浹背喘帚。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咒钟,地道東北人吹由。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像朱嘴,于是被迫代替她去往敵國和親倾鲫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359