日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 查询后怎么定位列_MySQL如何定位并优化慢查询sql

發(fā)布時間:2025/3/15 数据库 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 查询后怎么定位列_MySQL如何定位并优化慢查询sql 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.如何定位并優(yōu)化慢查詢sql

a.根據(jù)慢日志定位慢查詢sql

SHOW VARIABLES LIKE'%query%' ? ? 查詢慢日志相關(guān)信息

slow_query_log 默認(rèn)是off關(guān)閉的,使用時,需要改為on 打開

slow_query_log_file 記錄的是慢日志的記錄文件

long_query_time 默認(rèn)是10S,每次執(zhí)行的sql達(dá)到這個時長,就會被記錄

SHOW STATUS LIKE'%slow_queries%' 查看慢查詢狀態(tài)

Slow_queries 記錄的是慢查詢數(shù)量? 當(dāng)有一條sql執(zhí)行一次比較慢時,這個vlue就是1 (記錄的是本次會話的慢sql條數(shù))

注意:

如何打開慢查詢 : SET GLOBAL slow_query_log = ON;

將默認(rèn)時間改為1S: SET GLOBAL long_query_time = 1;

(設(shè)置完需要重新連接數(shù)據(jù)庫,PS:僅在這里改的話,當(dāng)再次重啟數(shù)據(jù)庫服務(wù)時,所有設(shè)置又會自動恢復(fù)成默認(rèn)值,永久改變需去my.ini中改)

b.使用explain等工具分析sql

在要執(zhí)行的sql前加上explain? 例如:EXPLAIN SELECT menu_name FROM t_sys_menu ORDER BY menu_id DESC;

接著看explain的關(guān)鍵字段

type:

如果發(fā)現(xiàn)type的值是最后兩個中的其中一個時,證明語句需要優(yōu)化了。

extra:

c.修改sql或者盡量讓sql走索引

mysql查詢優(yōu)化器會根據(jù)具體情況自己判斷走哪個索引,不一定是走主鍵(explain中的key可以看到走的哪個key)具體情況根據(jù)具體情況來定,當(dāng)你要強(qiáng)制執(zhí)行走某一個key時:

在查詢的最后加上 force index(primary); 強(qiáng)制走主鍵的

2.聯(lián)合索引的最左匹配原則的成因

最左匹配原則的概念參考:

https://www.cnblogs.com/lanqi/p/10282279.html

成因:

當(dāng)通過(col3,col2)這樣的聯(lián)合索引去查找時,可以看到也是一個B+樹的結(jié)構(gòu)向下查找,若直接通過col2去查找,無法直接查找到34、77。也就用不到這個聯(lián)合索引了。

3.索引是建立得越多越好嗎

1.數(shù)據(jù)量小的表不需要建立索引,建立會增加額外的索引開銷。

2.數(shù)據(jù)變更需要維護(hù)索引,因此更多的索引意味著更多的維護(hù)成本。

3.更多的索引意味著也需要更多的空間。

總結(jié)

以上是生活随笔為你收集整理的mysql 查询后怎么定位列_MySQL如何定位并优化慢查询sql的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。