一、問題sql篩選步驟
1、檢查慢日誌是否開啟:
2、檢查慢日誌路徑:
#檢查慢日誌路徑:
3、開始慢查詢日誌:
set global slow_query_log = on;
4、慢日誌判斷標準
show variables like '%long_query_time%';
5、修改慢日誌判斷標準
由於實際專案中1秒左右的查詢舊可以定義為慢查詢,所以這邊將慢查詢時間設定為1秒,再進行觀察
set global long_query_time = 1;
6、慢查詢日誌的儲存格式解析
其中 rows_send是使用者真實需要的資料,rows_examined相當於中間結果集,兩者相差太大,說明sql查詢的效率有問題
二、sql優化工具
sql優化工具tosska sql tuning expert for oracle,幫助sql開發人員解決sql效能問題。
本工具主要創始人richard to, 資深itpub元老,從2023年開始設計sql優化工具,擁有超過20年的sql優化經驗。
工具已經從最初的1.0, 1.1,1.2,逐步演化到了3.0. 最新版本主要包含3個功能:
1. 為單條sql產生等價sql, 並找出最快的等價sql;
2. 為單條sql建議最佳索引;
3. sql效能報表;
產品介紹
三、使用工具優化sql
1、用法大致介紹
主要又如下功能,操作簡單,大家可以自行安裝檢視
2、未優化之前的sql
3、檢視慢查詢的執行計畫
由上表可以看出,產生的中間表記錄為2萬多條
4、優化sql
select /*+ qb_name(qb1) bka(`wf`@qb1) */ count(1)
from cms_workflow wf
where wf.org_id = '149300c4126dc809ee3f7839f4ec03c1'
from cms_workflow a
left join cms_workflow_auditor b
where b.auditor_id = '940b22e174d04eef8b4500e5ddc6350c'
union all
from cms_workflow a
left join cms_workflow_notice b
where b.notice_user_id = '940b22e174d04eef8b4500e5ddc6350c'
union all
from cms_workflow a
left join cms_workflow_todo b
where b.user_id = '940b22e174d04eef8b4500e5ddc6350c') dt1)
and wf.id >= ''
5、檢視最優sql執行計畫
6、最終對比
由上述比較可以看出,在索引優化基本相同的情況下,主要看sql的寫法產生中間表的量級,對於索引優化相當的,產生中間表的數量越小查詢越快
MySQL優化 SQL及索引優化(二)
對支付時間建立索引 create index idx paydate on payment payment date 查詢 select max payment date from payment 在一條sql中同時查出2006年和2007年電影的數量 優化count 函式 對count函式使用的列...
SQL的優化及索引介紹
今天看到了乙個貼子,簡單介紹一下 影響查詢效能的兩個關鍵因素 索引,表掃瞄次數 所以優化的目標就是怎樣更好的利用索引和減少表掃瞄次數 不過得先知道什麼是索引?索引有什麼特點?有幾種型別的索引?索引是對資料庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓 name 列。如果要按姓...
Oracle 建立索引及SQL優化
oracle 建立索引及sql優化 資料庫索引 索引有單列索引 復合索引之說 如何某錶的某個欄位有主鍵約束和唯一性約束,則oracle 則會自動在相應的約束列上建議唯一索引。資料庫索引主要進行提高訪問速度。建設原則 1 索引應該經常建在where 子句經常用到的列上。如果某個大表經常使用某個字段進行...