亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

mysql數(shù)據(jù)庫怎么查看優(yōu)化 mysql數(shù)據(jù)庫查詢語句優(yōu)化


mysql數(shù)據(jù)庫怎么查看優(yōu)化 mysql數(shù)據(jù)庫查詢語句優(yōu)化

文章插圖
先來鞏固一下索引的優(yōu)點,檢索數(shù)據(jù)快、查詢穩(wěn)定、存儲具有順序性避免服務器建立臨時表、將隨機的I/O變?yōu)橛行虻腎/O 。
但索引一旦創(chuàng)建的不規(guī)范就會造成以下問題,占用額外空間,浪費內(nèi)存,降低數(shù)據(jù)的增、刪、改性能 。
所以只有在理解索引數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上才能創(chuàng)建出高效的索引 。
**本文所有操作均在MySQL8.0.12**一、創(chuàng)建索引規(guī)范
在學習索引優(yōu)化之前,需要對創(chuàng)建索引的規(guī)范有一定的了解,此規(guī)范來自于阿里巴巴開發(fā)手冊 。
主鍵索引:pk_column_column唯一索引:uk_column_column普通索引:idx_column_column二、索引失效原因
創(chuàng)建索引需知道在什么情況下索引會失效,只有了解索引失效的原因,在創(chuàng)建索引時才不會出現(xiàn)一些已知錯誤 。
1.帶頭大哥不能死這句經(jīng)典的語句就是涵蓋創(chuàng)建索引時一定要符合最左側(cè)原則 。
例如表結(jié)構(gòu)為u_id,u_name,u_age,u_sex,u_phone,u_time
創(chuàng)建索引為idx_user_name_age_sex 。
查詢條件必須帶上u_name這一列 。
2.不在索引列上做任何操作不在索引列上做任何計算、函數(shù)、自動或者手動的類型轉(zhuǎn)換,否則會進行全表掃描 。簡而言之不要在索引列上做任何操作 。
3.倆邊類型不等例如建立了索引idx_user_name,name字段類型為varchar
在查詢時使用where name = kaka,這樣的查詢方式會直接造成索引失效 。
正確的用法為where name = “kaka” 。
4.不適當?shù)膌ike查詢會導致索引失效創(chuàng)建索引為idx_user_name
執(zhí)行語句為select * from user where name like “kaka%”;可以命中索引 。
執(zhí)行語句為select name from user where name like “%kaka”;可以使用到索引(僅在8.0以上版本) 。
執(zhí)行語句為select * from user where name like ‘’%kaka”;會直接導致索引失效
5.范圍條件之后的索引會失效創(chuàng)建索引為idx_user_name_age_sex
執(zhí)行語句select * from user where name = ‘kaka’ and age > 11 and sex = 1;
上面這條sql語句只會命中name和age索引,sex索引會失效 。
復合索引失效需要查看key_len的長度即可 。
總結(jié):%在后邊會命令索引,當使用了覆蓋索引時任何查詢方式都可命中索引 。
以上就是關(guān)于索引失效會出現(xiàn)的原因總結(jié),在很多文章中沒有標注MySQL版本,所以你有可能會看到is null 、or索引會失效的結(jié)論 。
三、SQL優(yōu)化殺手锏之Explain在寫完SQL語句之后必須要做的一件事情就是使用Explain進行SQL語句檢測,看是否命中索引 。
下圖就是使用explain輸出格式,接下來將會對輸出格式進行簡單的解釋 。
1.id這列就是查詢的編號,如果查詢語句中沒有子查詢或者聯(lián)合查詢這個標識就一直是1 。
如存在子查詢或者聯(lián)合查詢這個編號會自增 。
2.select_type最常見的類型就是SIMPLE和PRIMARY,此列知道就行了 。
3.table理解為表名即可
4.**type此列是在優(yōu)化SQL語句時最需要關(guān)注的列之一,此列顯示了查詢使用了何種類型 。
以下排序從最優(yōu)到最差 。
system:表內(nèi)只有一行數(shù)據(jù)const:最多只會有一條記錄匹配,常用于主鍵或者唯一索引為條件查詢eq_ref:當連接使用的索引為主鍵和唯一時會出現(xiàn)ref:使用普通索引=或<=> 運算符進行比較將會出現(xiàn)fulltext:使用全文索引ref_or_null:跟ref類型類似,只是增加了null值的判斷,實際用的不多 。語句為where name = ‘kaka’ and name is null,name為普通索引 。index_merge:查詢語句使用了倆個以上的索引,常見在使用and、or會出現(xiàn),官方文檔將此類型放在ref_or_null之后,但是在很多的情況下由于讀取索引過多性能有可能還不如rangeunique_subquery:用于where中的in查詢,完全替換子查詢,效率更高 。語句為value IN (SELECT primary_key FROM single_table WHERE some_expr)index_subquery:子查詢中的返回結(jié)果字段組合是一個索引(或索引組合),但不是一個主鍵或唯一索引range:索引范圍查詢,常見于使用 =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, IN()或者like等運算符的查詢中 。index:索引全表掃描,把索引從頭到尾掃一遍all:全表掃描,性能最差 。5.possible_keys此列顯示的可能會使用到的索引


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: