回覆列表
-
1 # IT技術百貨
-
2 # 愛可生雲資料庫
子查詢最佳化策略
對於不同型別的子查詢,最佳化器會選擇不同的策略。
1. 對於 IN、=ANY 子查詢,最佳化器有如下策略選擇:
semijoinMaterializationexists2. 對於 NOT IN、<>ALL 子查詢,最佳化器有如下策略選擇:Materializationexists3. 對於 derived 派生表,最佳化器有如下策略選擇:derived_merge,將派生表合併到外部查詢中(5.7 引入 );將派生表物化為內部臨時表,再用於外部查詢。注意:update 和 delete 語句中子查詢不能使用 semijoin、materialization 最佳化策略
樓主的這個問題並不是非常清晰,但大體意思是說Mysql最佳化,實際上不同的業務場景可能會有不同的最佳化方案,比如有些場景可以配置查詢快取,有些則不可以。
1、對於查詢SQL語句的最佳化,一般來說先想到是加索引
2、使用explain檢視SQL語句的執行計劃,看看時間主要花費在什麼地方
3、根據業務場景,調整表結構,最佳化子查詢的效率
4、根據業務場景,對錶進行適當的拆分,將這個查詢需要的欄位單獨拆分到一個表中。