##查詢效能優化
查詢的生命週期:客戶端-》伺服器-》查詢快取-》命令解析-》預處理-》優化器優化-》查詢執行引擎
查詢生命週期每一子任務響應時間都可能慢,但核心是執行任務。
分析步驟:
確認是否在檢索大量超過需要的資料。(訪問了太多行或列)
確認伺服器是否在分析大量超過需要的資料行。
2.1 衡量查詢開銷三大指標:
2. 掃瞄的行數:訪問型別
3. 返回的行數
訪問型別:全表掃瞄-》索引掃瞄-》範圍掃瞄-》唯一索引-》常數索引等。
三種方式額同意where條件,從好到壞依次:
1.在索引中使用where條件來過濾不匹配的記錄。(引擎層完成)
2.使用索引覆蓋掃瞄。(伺服器層完成)
3.從資料表返回資料,然後過濾不滿足條件的記錄。(伺服器層完成)
3.1 乙個複雜查詢還是多個簡單查詢
3.2 切分查詢
3.3 分解關聯查詢查詢的生命週期:客戶端-》伺服器-》查詢快取-》命令解析-》預處理-》優化器優化-》查詢執行引擎
優化器優化能處理的優化型別:
1.重新定義關聯表的順序
2.將外連線轉化為內連線
3.使用等價變換規則
4.優化count(),min(), max():索引和列是否可以為空可以幫助優化這類表示式
5.預估並轉化為常數表示式
6.覆蓋索引掃瞄
7.子查詢優化
8.提前終止查詢
9.等值傳播
10.列表in()的比較
關聯查詢:也叫巢狀迴圈關聯
6.1 優化count()查詢
count()的作用:一、統計某個列的數量;二、統計行數。建議使用count(*) 意義清晰,效能也好。
6.2 優化關聯查詢
確保on或者using子句中的列有索引
確保任何的group by和order by中表示式只涉及到乙個表中的列。
選擇合適的驅動表。
6.3 優化子查詢
6.4 優化group by和disctinct
1.通過索引優化
6.5 優化limit分頁
6.6 優化union查詢
1.盡量使用union all
查詢效能優化
查詢的最基本的原因是 訪問的資料太多。可以通過減少訪問的資料兩進行優化 具體步驟如下 確認應用程式是否檢索大量超過需要是資料 訪問行列太多 返回三個表的全部資料列 select from sakila.actor inner join sakila.film actor using actor id...
查詢效能優化
查詢後面加limit 只查詢需要的列 如果查詢相同的資料,可以用快取儲存起來 mysql最簡單衡量查詢開銷的三個指標 響應時間,掃瞄行數,返回行數 響應時間包括服務時間和排隊時間,服務時間就是資料庫處理這個查詢所花的時間,排隊時間一般常見的是i o和鎖等待所花大的事件 理想的情況下,掃瞄行數等於返回...
mysql查詢效能優化 MySQL 查詢效能優化
在日常開發中,程式設計師寫的最多的除了bug之外,應該算是sql語句了。sql的質量影響了程式的響應速度,只有利用mysql的特性,才能讓mysql更有效的執行查詢sql,充分發揮mysql的優勢,並避開它的弱點。為什麼查詢速度會慢?在編寫sql之前,需要清楚一點 真正重要的是響應時間。如果我們把查...