SQL及索引優化

2021-10-18 22:33:51 字數 2814 閱讀 8114

一、問題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 子句經常用到的列上。如果某個大表經常使用某個字段進行...