中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站建設(shè)價(jià)格裙網(wǎng)上互聯(lián)網(wǎng)推廣

網(wǎng)站建設(shè)價(jià)格裙,網(wǎng)上互聯(lián)網(wǎng)推廣,忻府網(wǎng)站建設(shè),梵訊企業(yè)網(wǎng)站建設(shè)什么是MySQL的索引 索引是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu) MySQL再存儲數(shù)據(jù)之外,數(shù)據(jù)庫系統(tǒng)中還維護(hù)者滿足特定查找算法的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)以某種引用表中的數(shù)據(jù),這樣我們就可以通過數(shù)據(jù)結(jié)構(gòu)上實(shí)現(xiàn)的高級查找算法來快速…

什么是MySQL的索引
????????索引是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)
????????MySQL再存儲數(shù)據(jù)之外,數(shù)據(jù)庫系統(tǒng)中還維護(hù)者滿足特定查找算法的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)以某種引用表中的數(shù)據(jù),這樣我們就可以通過數(shù)據(jù)結(jié)構(gòu)上實(shí)現(xiàn)的高級查找算法來快速找到我們想要的數(shù)據(jù),而這種數(shù)據(jù)結(jié)構(gòu)就是索引。
????????簡單理解為,“排好序的可以快速查找數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)”
索引數(shù)據(jù)結(jié)構(gòu)
????????二叉樹數(shù)據(jù)結(jié)構(gòu)
????????????????弊端:當(dāng)極端情況下,數(shù)據(jù)遞增插入是,會一直向右插入,形成鏈表,查詢效率會降低
????????MySQL中常用地索引數(shù)據(jù)結(jié)構(gòu)有BTree索引(MyISAM存儲引擎),B+Tree索引(Innodb存儲引擎),Hash索引(memory存儲引擎)等等。
索引優(yōu)勢
????????提高數(shù)據(jù)檢索的效率,降低數(shù)據(jù)庫的IO成本
????????通過索引對數(shù)據(jù)進(jìn)行排序,降低數(shù)據(jù)排序的成本,降低了CPU的消耗
索引劣勢
????????索引實(shí)際上也是一張表,保存了主鍵和索引的字段,并且指向?qū)嶓w表的記錄,所以索引也是需要占用空間的,在索引大大提高查詢速度的同時(shí),卻會降低表的更新速度,在對表進(jìn)行數(shù)據(jù)增刪改的同時(shí),MySQL不僅要更新數(shù)據(jù),還需要保存一下索引文件,每次更新添加了的索引列的字段,都會去調(diào)整因?yàn)楦聨淼臏p值變化后的索引的信息。
索引使用場景
????????推薦建立索引:
????????????????主鍵自動建立唯一索引
????????????????頻繁作為查詢條件的字段應(yīng)該創(chuàng)建索引(where后面的語句)
????????????????查詢中與其他表關(guān)聯(lián)的字段,外鍵關(guān)系建立索引
????????????????多字段查詢下傾向創(chuàng)建組合索引
????????????????查詢中排序的字段,排序字段若通過索引去訪問將大大提高排序速度
????????????????查詢中統(tǒng)計(jì)或者分組字段
不推薦建立索引
????????????????表記錄太少
????????????????經(jīng)常增刪改查
????????????????where條件里用不到的字段不建立索引
索引分類
????????主鍵索引
????????????????表中的列設(shè)定為主鍵后,數(shù)據(jù)庫會自動建立主鍵索引
????????????????單獨(dú)創(chuàng)建和刪除主鍵索引語法
????????????????????????創(chuàng)建主鍵索引語法:alter table 表名 add primary key (字段)
????????????????????????刪除主鍵索引語法:alter table 表名 drop primary key;
????????唯一索引
????????????????表中的列創(chuàng)建了唯一約束時(shí),數(shù)據(jù)庫會自動建立唯一索引。
????????????????單獨(dú)創(chuàng)建和刪除唯一索引語法:
????????????????????????創(chuàng)建唯一索引語法:alter table 表名 add unique 索引名(字段)或create unique index 索引名 on 表名(字段)
????????????????????????刪除唯一索引語法:drop index 索引名 on 表名
????????單值索引(即一個(gè)索引只包含單個(gè)列,一個(gè)表可以有多個(gè)單值索引)
????????????????建表時(shí)可隨表一起建立單值索引
????????????????單獨(dú)創(chuàng)建和刪除單值索引:
????????????????????????創(chuàng)建單值索引:alter table 表名 add index 索引名(字段)或create index 索引名 on 表名(字段)
????????????????????????刪除單值索引:drop index 索引名 on 表名;
????????復(fù)合索引(即一個(gè)索引包含多個(gè)列)
????????????????建表時(shí)可隨表一起簡歷復(fù)合索引
????????????????單獨(dú)創(chuàng)建和刪除復(fù)合索引:
????????????????????????創(chuàng)建復(fù)合索引:create index 索引名 on 表名(字段1,字段2);或alter table 表名 add?index 索引名(字段1,字段2);
????????????????????????刪除復(fù)合索引:drop index 索引名 on 表名;
性能分析

MySQL常見瓶頸
????????SQL中對大量數(shù)據(jù)進(jìn)行比較、關(guān)聯(lián)、排序、分組時(shí)CPU的瓶頸
????????實(shí)例內(nèi)存滿足不了緩存數(shù)據(jù)或排序等需要,導(dǎo)致產(chǎn)生大量的物理IO。查詢數(shù)據(jù)是掃描過多數(shù)據(jù)行,導(dǎo)致查詢效率低。
Explain
????????使用Explain關(guān)鍵字可以模擬優(yōu)化器執(zhí)行SQL查詢語句,從而知道MySQL是如何處理SQL語句的??梢杂脕矸治霾樵冋Z句或是表的結(jié)構(gòu)的性能瓶頸。其作用:
????????????????表的讀取順序
????????????????哪些索引可以使用
????????????????數(shù)據(jù)讀取操作的操作類型
????????????????哪些索引被實(shí)際使用
????????????????表之間的引用
????????????????每張表有多少行被優(yōu)化器查詢
????????explain關(guān)鍵字使用起來比較簡單:explain + sql 語句
????????explain重要字段名
????????????????id
select查詢的序列號,表示查詢中執(zhí)行select子句或操作表的順序
id相同時(shí),執(zhí)行順序由上至下
id不同,如果是子查詢,id的序號會遞增,id值越大優(yōu)先級越高,則先被執(zhí)行
id相同和不同都存在是,id相同的可以理解為一組,從上往下順序執(zhí)行,所有組中,id值越大,優(yōu)先級越高越先執(zhí)行。
select_type
simple:簡單的select查詢,查詢中不包含子查詢或者union
primary:查詢中若包含任何復(fù)雜的子部分,最外層查詢則被標(biāo)記為primary
derived:在from列表中包含的子查詢被標(biāo)記為derived(衍生),mysql會遞歸執(zhí)行這些子查詢,把結(jié)果放在臨時(shí)表里。
subquery:在select或where列表中包含了子查詢。
table:顯示這一行的數(shù)據(jù)是關(guān)于哪張表的
type
system:表只有一行記錄(等于系統(tǒng)表),這是const類型的特列,平時(shí)不會出現(xiàn),這個(gè)也可以忽略不計(jì)
const:表示通過索引一次就找到了,const用于比較primary key或者unique索引。因?yàn)橹黄ヅ湟恍袛?shù)據(jù),所以很快,如將主鍵置于where列表中,mysql就能將該查詢轉(zhuǎn)換為一個(gè)常量。
eq_ref:唯一性索引掃描,對于每個(gè)索引鍵,表中只有一條記錄與之匹配。常見于主鍵或唯一索引掃描
ref:非唯一性索引掃描,返回匹配某個(gè)單獨(dú)值的所有行。本質(zhì)上也是一種索引訪問,它返回所有匹配某個(gè)單獨(dú)值的行,然而,它可能會找到多個(gè)符合條件的行,所以他應(yīng)該數(shù)據(jù)查找和掃描的混合體。
range:只檢索給定范圍的行,使用一個(gè)索引來選擇行。key列顯示使用了哪個(gè)索引一般就是在你的where語句中出現(xiàn)了between、<、>、in等的查詢這種范圍掃描索引掃描比全表掃描要好,因?yàn)樗恍枰_始于索引的某一點(diǎn),而結(jié)束語另一點(diǎn),不用掃描全部索引。
index:full index scan,index與all區(qū)別為index類型只遍歷索引樹。這通常比all快,因?yàn)樗饕募ǔ1葦?shù)據(jù)文件小,也就是說雖然all和index都是讀全表,但index是從索引中讀取的,而all是從硬盤中讀的。
all:full table scan,將遍歷全表以找到匹配的行。
從最好到最差依次是system>const>eq_ref>ref>range>index>all。一般來說,最好保證查詢能達(dá)到range級別,最好能達(dá)到ref。
possible_keys:顯示可能應(yīng)用在這張表中的索引,一個(gè)或多個(gè)。查詢涉及到的字段上如果存在索引,則該索引將會被列出來,但不一定會被查詢實(shí)際使用上。
key:查詢中實(shí)際使用的索引,如果為null,則沒有使用索引
ref:顯示索引的哪一列被使用了,哪些列或常量被用于查找索引列上的值
rows:rows列顯示MySQL認(rèn)為它執(zhí)行查詢時(shí)必須檢查的行數(shù),一般越少越好。
extra:一些常見的重要的額外信息:
using filesort:MySQL無法利用索引完成的排序操作稱為“文件排序”(排序時(shí)沒有使用索引,需要優(yōu)化)
Using temporary:MySQL在對查詢結(jié)果排序時(shí)使用臨時(shí)表,常見于排序order by和分組查詢group by。(分組時(shí)沒有使用索引,需要優(yōu)化)
Using index:表示索引被用來執(zhí)行行索引鍵值的查找,避免訪問了表的數(shù)據(jù)行,效率不錯(cuò)。
Using where:表示使用了where過濾。
查詢優(yōu)化

索引失效
最佳左前綴法則:如果索引了多列,要遵循最左前綴法則,指的是查詢從索引的最左前列開始并且不跳過索引中的列。
不在索引列上做任何計(jì)算、函數(shù)操作,會導(dǎo)致索引失效而轉(zhuǎn)向全表掃描。
存儲引擎不能使用索引中范圍條件右邊的列。
MySQL在使用不等于時(shí)無法使用索引會導(dǎo)致全表掃描。
is null 可以使用索引,但是is not null無法使用索引。
like以通配符開頭會使索引失效導(dǎo)致全表掃描。
字符串不加單引號索引會失效。
使用or連接時(shí)索引失效
建議:
and會自動調(diào)整順序?yàn)樽钭笄傲?br /> 對于單值索引,盡量選擇針對當(dāng)前查詢字段過濾性更好的索引
對于組合索引,當(dāng)前where查詢中過濾性更好的字段在索引字段順序中位置越靠前越好
對于組合索引,盡量選擇能夠包含在當(dāng)前查詢中where子句中更多字段的索引
盡可能通過分析統(tǒng)計(jì)信息和調(diào)整query的寫法來達(dá)到選擇合適索引的目的
排序優(yōu)化
盡量避免使用Using FileSort方式排序
order by語句使用索引最左前列或使用where子句與order by子句條件組合滿足索引最左前列。
where子句中如果出現(xiàn)索引范圍查詢會導(dǎo)致order by索引失效。
關(guān)聯(lián)查詢優(yōu)化:內(nèi)連接時(shí),MySQL會自動把小結(jié)果集的選為驅(qū)動表,所以大表的字段最好加上索引,左外連接時(shí),左表會全表掃描,所以右邊大表字段最好加上索引,右外連接同理,我們最好保證被驅(qū)動表上的字段建立了索引。
慢查詢?nèi)罩?/p>

慢查詢?nèi)罩竞喗?#xff1a;mysql的慢查詢?nèi)罩臼荕ySQL提供的一種日志記錄,它用來記錄在MySQL中響應(yīng)時(shí)間超越閥值的語句,具體指運(yùn)行時(shí)間超過long_query_time值的SQL,則會被記錄到慢查詢?nèi)罩局?#xff0c;可以由它來查看哪些SQL超出了我們最大忍耐時(shí)間值。
慢查詢?nèi)罩臼褂?br /> 默認(rèn)情況下,MySQL數(shù)據(jù)庫沒有開啟慢查詢?nèi)罩?#xff0c;需要手動設(shè)置參數(shù)。
查看是否開啟:show variables like '%slow_query_log%';
開啟日志:set global slow_query_log = 1;
設(shè)置時(shí)間:set global long_query_time=1;
查看時(shí)間:show vari ables like 'long_query_time%';
查看超時(shí)的SQL記錄日志:MySQL的數(shù)據(jù)文件夾下:5.5/Data/設(shè)備名稱-slow.log
注意:非調(diào)優(yōu)場景下,一般不建議啟動改參數(shù),慢查詢?nèi)罩局С謱⑷罩居涗泴懭胛募?#xff0c;開啟慢查詢?nèi)罩緯蚨嗷蛏賻硪欢ǖ男阅苡绊憽?作者:云中呂行 https://www.bilibili.com/read/cv22006632/?jump_opus=1 出處:bilibili

http://www.risenshineclean.com/news/2744.html

相關(guān)文章:

  • 網(wǎng)站建設(shè) 軟文微信營銷案例
  • seo免費(fèi)網(wǎng)站建設(shè)用今日頭條導(dǎo)入自己網(wǎng)站外鏈
  • 成都專業(yè)網(wǎng)站推廣公司網(wǎng)絡(luò)營銷的特點(diǎn)有幾個(gè)
  • 網(wǎng)站建設(shè)有哪些需要注意的關(guān)鍵細(xì)節(jié)百度推廣客服中心
  • 特價(jià)做網(wǎng)站谷歌搜索引擎入口2022
  • 網(wǎng)站開發(fā)參考文獻(xiàn)期刊seo常用工具網(wǎng)站
  • wordpress修改主題文件做seo需要哪些知識
  • 重慶企業(yè)vi設(shè)計(jì)公司安卓優(yōu)化大師下載安裝
  • 牛網(wǎng)網(wǎng)站建設(shè)互聯(lián)網(wǎng)營銷推廣怎么做
  • 蘇州市住房和城鄉(xiāng)建設(shè)局網(wǎng)站首頁手機(jī)如何做網(wǎng)站
  • 查詢建筑企業(yè)網(wǎng)站太原seo快速排名
  • 網(wǎng)站url和網(wǎng)站域名重慶森林經(jīng)典臺詞 鳳梨罐頭
  • 如何下載ppt模板免費(fèi)短視頻關(guān)鍵詞seo優(yōu)化
  • 武漢市建設(shè)委員會網(wǎng)站如何使用網(wǎng)絡(luò)營銷策略
  • 電器網(wǎng)站建設(shè)策劃書百度信息流推廣技巧
  • 茂名做網(wǎng)站公司外貿(mào)營銷網(wǎng)站建設(shè)介紹
  • 優(yōu)化網(wǎng)站作用永久免費(fèi)域名申請
  • 手機(jī)做網(wǎng)站多少錢中小企業(yè)管理培訓(xùn)課程
  • 昆明住房和城鄉(xiāng)建設(shè)部網(wǎng)站關(guān)鍵詞制作軟件
  • 免費(fèi)英文建設(shè)網(wǎng)站企點(diǎn)qq官網(wǎng)
  • 購買手表的網(wǎng)站百度收錄需要多久
  • 網(wǎng)站規(guī)劃明細(xì)表昆明seo關(guān)鍵字推廣
  • 如何做 試題類 網(wǎng)站百度競價(jià)投放
  • 哪些做展架圖的網(wǎng)站好代運(yùn)營服務(wù)
  • 網(wǎng)站后臺是怎么做的網(wǎng)頁怎么做出來的
  • 西安網(wǎng)站建設(shè)hyk123網(wǎng)站制作培訓(xùn)
  • 網(wǎng)站開發(fā)所需費(fèi)用自學(xué)seo能找到工作嗎
  • seo是什么意思網(wǎng)絡(luò)用語seo外包公司哪家好
  • 專做外貿(mào)的網(wǎng)站有哪些免費(fèi)十八種禁用網(wǎng)站
  • 凡客做網(wǎng)站廣州搜發(fā)網(wǎng)絡(luò)科技有限公司