mysql的慢查詢實戰 sql優化

2021-09-01 17:37:32 字數 2868 閱讀 9888

背景:使用a電腦安裝mysql,b電腦通過xshell方式連線,資料內容我都已經建立好,現在我已正常的進入到mysql中

2.開啟慢查詢日誌

set global slow_query_log=on;
3.檢視慢查詢日誌的設定時間,是否是自己需要的

4.如果不是自己想的時間,修改慢查詢時間,只要超過了以下的設定時間,查詢的日誌就會到剛剛的日誌中,我設定查詢時間超過1s就進入到慢查詢日誌中

set global long_query_time=1;
5.大資料已準備,進行資料的查詢,xshell最好開兩個視窗,乙個檢視日誌,乙個執行內容

sql查詢語句:select sql_no_cache * from employees_tmp  where first_name='duangkaew' and gender='m'

發現查資料的總時間去掉了17.74s

檢視日誌:開啟日誌

標記1:執行的sql語句

標記2:執行sql的時間,我的是10點52執行的

標記3:使用那台機器

標記4:執行時間,query_tims,查詢資料的時間

標記5:不知道是幹嘛的

標記6:執行耗時的sql語句,我在想我1的應該是擷取錯了!但是記住最後一定是顯示耗時是因為執行什麼sql造成的

6.執行列印計畫,主要是檢視是否使用了索引等其他內容,主要就是在sql前面加上explain 關鍵字

描述extra中,表示只使用了where條件,沒有其他什麼索引之類的

7.進行sql優化,建乙個fist_name的索引,索引就是將你需要的資料先給篩選出來,這樣就可以節省很多掃瞄時間

注:建立索引時會很慢,是對整個表做了乙個複製功能,並進行資料的一些分類(我猜是這樣,所以會很慢)

8.檢視建立的索引

9.在執行查詢語句,檢視語句的執行時間

發現時間已經有所提公升了,其實選擇索引也不一開始就知道,我們在試試使用性別,gender進行索引

10.刪除已經有的索引,刪除索引:

drop index first_name on employees_tmp;
11.建立性別的索引(性別是不怎麼好的索引方式,因為有很多重複資料)

create index index_gendar on employees_tmp(gender);
在執行sql語句查詢資料,檢視查詢執行時間,沒有建立比較優秀的索引,導致查詢時間還變長了,

為嘛還變長了,這個我沒有弄懂

12.我們在試試使用建立組合索引,使用性別和姓名

alter table  employees_tmp  add index idx_union (first_name,gender);
在執行sql檢視sql資料的執行時間

select sql_no_cache * from employees_tmp  where first_name='duangkaew' and gender='m'
速度提公升了n多倍啊

檢視建立的索引

show index from employees_tmp;
索引建的好真的乙個好幫手,建不好就是費時的乙個操作

目前還不知道為什麼建立性別的索引會這麼慢

sql中慢查詢的調優

一 設定相應的慢sql show variables like quer 查詢慢查詢的相關資訊,如下圖是設定過的相應資訊 show status like slow queries 查詢慢查詢的數量 1.set global slow query log on 開啟慢查詢 2.set global ...

mysql如何定位並調優慢sql查詢

1.定位,根據sql慢日誌定位查詢慢sql.show variables like quer 重點關注一下三個查詢結果 show query log off on 是否展示慢日誌 slow query log file 慢日誌存放路徑 long query time 定義為慢查詢的時間 show s...

mysql回表慢sql SQL慢查詢常用優化方法

先建立測試表並使用儲存過程插入測試資料 create table cif student id varchar 40 not null,name varchar 40 default null,age varchar 40 default null,class id varchar 40 defau...