MySQL數(shù)據(jù)庫(kù)-day -6 2019-06-20

索引

1.索引的作用
優(yōu)化查詢,類似于書中的目錄

2.算法分類
BTree 
RTree
Hash
fulltext 
gis 
3. 聚集索引和輔助索引構(gòu)成邏輯
4.輔助索引細(xì)分
單列
多列(聯(lián)合索引)
唯一
5.索引樹的高度
(1)數(shù)據(jù)行    分表
(2)索引列值較長(zhǎng)  前綴索引 
(3)數(shù)據(jù)類型 char varchar  
(4)enum  (枚舉)  能用則用

6.索引的管理操作

alter table t100w add index idx_ke(k2);   #---> 普通索引
alter table t100w  add unique index ind_k1(k1);  #---->唯一索引
alter table city add index idx_name(name(5));   #----> 前綴索引
alter table city add index idx_co_po(`CountryCode`,`Population`);     #----> 聯(lián)合索引                                           
desc t100w;    #-----> 查看索引 (Key (MUL 普通索引)(UNI 唯一索引)(PRI 主鍵索引)) 
select count(distinct(k1)) from t100w;    #----> 查看列重復(fù)行
alter table city drop index idx_name;   #---->查出索引

7.執(zhí)行計(jì)劃獲取及分析
7.0介紹

(1)
獲取到的是優(yōu)化器選擇完成的,他認(rèn)為代價(jià)最小的執(zhí)行計(jì)劃.
作用: 語(yǔ)句執(zhí)行前,先看執(zhí)行計(jì)劃信息,可以有效的防止性能較差的語(yǔ)句帶來(lái)的性能問(wèn)題.
如果業(yè)務(wù)中出現(xiàn)了慢語(yǔ)句罕邀,我們也需要借助此命令進(jìn)行語(yǔ)句的評(píng)估,分析優(yōu)化方案。
(2) select 獲取數(shù)據(jù)的方法
1. 全表掃描(應(yīng)當(dāng)盡量避免,因?yàn)樾阅艿?
2. 索引掃描
3. 獲取不到數(shù)據(jù)

7.1查看執(zhí)行計(jì)劃

mysql root@localhost:oldboy> desc  select * from t100w\G                            
***************************[ 1. row ]***************************
id            | 1
select_type   | SIMPLE
table         | t100w      #----->查詢的表
partitions    | <null>
type          | ALL        #----->索引類型
possible_keys | <null>      #----->可能走的索引
key           | <null>        #----->走的索引名
key_len       | <null>     #----->應(yīng)用索引的長(zhǎng)度
ref           | <null>
rows          | 997527    #-----> 查詢結(jié)果集的長(zhǎng)度
filtered      | 100.0
Extra         | <null>     #----->額外信息

7.2 type 索引的應(yīng)用級(jí)別

ALL :   全表掃描斜纪,不走索引
沒(méi)建立索引!文兑!
建立索引不走的():懈铡!B陶辍因块!
mysql> desc select * from t100w;
mysql> desc select * from t100w where k1='aa';
(輔助索引)
mysql> desc select * from t100w where k2 != 'aaaa';
mysql> desc select * from t100w where k2 like '%xt%';

Index :全索引掃描
mysql> desc select k2 from t100w;

range :索引范圍掃描
輔助索引 : > < >= <= like ,   in   or    
主鍵: != 
mysql> desc select * from world.city where countrycode like 'C%'
mysql> desc select * from world.city where id!=3000;
mysql> desc select * from world.city where id>3000;
mysql> desc select * from world.city where countrycode in ('CHN','USA');

改寫為:
desc
select * from world.city where countrycode='CHN'
union all 
select * from world.city where countrycode='USA';

ref : 輔助索引等值查詢
mysql> desc select * from city where countrycode='CHN';

eq_ref :在多表連接查詢是on的條件列是唯一索引或主鍵
mysql> desc select a.name,b.name ,b.surfacearea 
from city as a 
join country as b 
on a.countrycode=b.code 
where a.population <100;

const,system : 主鍵或唯一鍵等值查詢
mysql> DESC SELECT * from city where id=10;


7.3. explain(desc)使用場(chǎng)景(面試題)

題目意思:  我們公司業(yè)務(wù)慢,請(qǐng)你從數(shù)據(jù)庫(kù)的角度分析原因
1.mysql出現(xiàn)性能問(wèn)題,我總結(jié)有兩種情況:
(1)應(yīng)急性的慢:突然夯住
應(yīng)急情況:數(shù)據(jù)庫(kù)hang(卡了,資源耗盡)
處理過(guò)程:
1.show processlist;  獲取到導(dǎo)致數(shù)據(jù)庫(kù)hang的語(yǔ)句
2. explain 分析SQL的執(zhí)行計(jì)劃,有沒(méi)有走索引,索引的類型情況
3. 建索引,改語(yǔ)句
(2)一段時(shí)間慢(持續(xù)性的):
1.記錄慢日志slowlog,分析slowlog
2.explain 分析SQL的執(zhí)行計(jì)劃,有沒(méi)有走索引,索引的類型情況
3.建索引,改語(yǔ)句

8. 索引應(yīng)用規(guī)范

業(yè)務(wù)
1.產(chǎn)品的功能
2.用戶的行為
"熱"查詢語(yǔ)句 --->較慢--->slowlog
"熱"數(shù)據(jù)

8.1.9 建索引原則

(1) 必須要有主鍵,如果沒(méi)有可以做為主鍵條件的列,創(chuàng)建無(wú)關(guān)列
(2) 經(jīng)常做為where條件列  order by  group by  join on, distinct 的條件(業(yè)務(wù):產(chǎn)品功能+用戶行為)
(3) 最好使用唯一值多的列作為索引,如果索引列重復(fù)值較多,可以考慮使用聯(lián)合索引
(4) 列值長(zhǎng)度較長(zhǎng)的索引列,我們建議使用前綴索引.
(5) 降低索引條目,一方面不要?jiǎng)?chuàng)建沒(méi)用索引,不常使用的索引清理,percona toolkit(xxxxx)
(6) 索引維護(hù)要避開業(yè)務(wù)繁忙期

8.10 關(guān)于聯(lián)合索引

(1)where A group by B order by c  #--->(A,B籍铁,C) 
(2)where A B C 
      (2.1)都是等值涡上,在5.5 以后無(wú)關(guān)索引順序,把空一個(gè)原則唯一值多的列放在聯(lián)合索引最左側(cè)拒名。
      (2.2)如果有不等值
select where A= AND B> AND C= 
索引順序吩愧,ACB ,語(yǔ)句改為ACB 
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末增显,一起剝皮案震驚了整個(gè)濱河市雁佳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌同云,老刑警劉巖糖权,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異炸站,居然都是意外死亡温兼,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門武契,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事咒唆〗斓妫” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵全释,是天一觀的道長(zhǎng)装处。 經(jīng)常有香客問(wèn)我,道長(zhǎng)浸船,這世上最難降的妖魔是什么妄迁? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮李命,結(jié)果婚禮上登淘,老公的妹妹穿的比我還像新娘。我一直安慰自己封字,他們只是感情好黔州,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著阔籽,像睡著了一般流妻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上笆制,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天绅这,我揣著相機(jī)與錄音,去河邊找鬼在辆。 笑死证薇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的开缎。 我是一名探鬼主播棕叫,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼奕删!你這毒婦竟也來(lái)了俺泣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤完残,失蹤者是張志新(化名)和其女友劉穎伏钠,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谨设,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熟掂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扎拣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赴肚。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡素跺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出誉券,到底是詐尸還是另有隱情指厌,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布踊跟,位于F島的核電站踩验,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏商玫。R本人自食惡果不足惜箕憾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拳昌。 院中可真熱鬧袭异,春花似錦、人聲如沸地回。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)刻像。三九已至畅买,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間细睡,已是汗流浹背谷羞。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留溜徙,地道東北人湃缎。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蠢壹,于是被迫代替她去往敵國(guó)和親嗓违。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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