MySQL 查詢效能差的SQL

2021-08-05 21:21:13 字數 1403 閱讀 8773

## sql查詢優化

### 如何獲取效能差的sql

1. 通過使用者反饋獲取的存在效能問題的sql

2. 通過慢查日誌獲取的存在效能問題的sql

show_query_log 啟動停止慢查詢日誌引數 on

set global

show_query_log_file 慢查詢日誌存放的位址和檔案

long_query_time 慢查詢記錄的閾值單位s 預設10s 建議使用0.001

log_queries_not_useing_indexes

mysqldumpslow是乙個針對於mysql慢查詢的命令列程式。在配置mysql相關引數後,可以通過mysqldumpslow查詢出查詢較慢的sql語句。

使用 show variables like 「%query%」 查詢引數 因為5.6之前的某些版本是ong_query_time, long_query_time和log-slow-queries。

與mysqldumpslow相關的配置變數:

設定慢查詢日誌相關引數

開啟慢查詢日誌

set global slow_query_log=on;

設定沒有索引的記錄到慢查詢日誌

set global log_queries_not_using_indexes=on;

設定到慢查詢日誌的 sql 執行時間(單位是秒 預設是10s 可以精確到微妙)

set global long_query_time=0.001;

設定慢查詢日誌的存放位置(最好設定 否則存放在mysql預設的存放資料的目錄,日誌和資料分開)

set global slow_query_log_file=」/users/luisedware/code/output/mysql-slow.log」;

pt-query-digest可以從普通mysql日誌,慢查詢日誌以及二進位制日誌中分析查詢,甚至可以從show processlist和mysql協議的tcpdump中進行分析,如果沒有指定檔案,它從標準輸入流(stdin)中讀取資料。

命令: pt-query-digest slow.logs

這個部分是乙個大致的概要資訊(類似loadrunner給出的概要資訊),通過它可以對當前mysql的查詢效能做乙個初步的評估,比如各個指標的最大值(max),平均值(min),95%分布值,中位數(median),標準偏差(stddev)。這些指標有查詢的執行時間(exec time),鎖占用的時間(lock time),mysql執行器需要檢查的行數(rows examine),最後返回給客戶端的行數(rows sent),查詢的大小。

select id,user,host,db,command ,time,state,info from information_schema.processlist where time>60;

mysql查詢效能優化 MySQL 查詢效能優化

在日常開發中,程式設計師寫的最多的除了bug之外,應該算是sql語句了。sql的質量影響了程式的響應速度,只有利用mysql的特性,才能讓mysql更有效的執行查詢sql,充分發揮mysql的優勢,並避開它的弱點。為什麼查詢速度會慢?在編寫sql之前,需要清楚一點 真正重要的是響應時間。如果我們把查...

SQL語句的效能查詢

本文 對於做管理系統和分析系統的程式設計師,複雜sql語句是不可避免的,面對海量資料,有時候經過優化的某一條語句,可以提高執行效率和整體執行效能。如何選擇sql語句,本文提供了兩種方法,分別對多條sql進行量化的分析。在測試sql效能的過程中。一是通過設定statistics檢視執行sql時的系統情...

mysql子查詢效能 MySQL子查詢效能

1 語法 子查詢有in和exists兩種,哪種速度更快呢?主要取決於兩張表的大小關係。select from a where cc in select cc from b select from a where exists select cc from b where b.cc a.cc in會先...