Mysql的执行顺序与优化分析
編寫順序與執行順序分析
一條完整的sql語句編寫流程應該如下:
select distinct 查詢字段? ?from 表名??JOIN 表名? ??ON 連接條件? ?where 查詢條件? ?group by 分組字段?
having 分組后條件? ? ?order by 排序條件? ? ?limit 查詢起始位置, 查詢條數
但是在mysql實際執行讀取的過程中,它的順序發生了變化:
from 表名? ?ON 連接條件? ?JOIN 表名? ??where 查詢條件? ? ?group by 分組字段
having 分組后條件? ? ?select distinct 查詢字段? ??order by 排序條件? ? ?limit 查詢起始位置, 查詢條數
整體執行過程:
1.先對多表進行關系,根據條件找出符合條件的記錄
2.在符合條件的基礎上進行再次where條件篩選
3.對篩選出來的內容進行分組操作
4.分組完成后, 使用having再次篩選出滿足條件的記錄
5.取所滿足條件的記錄
6.對取出的記錄進行排序
7.最終從取出的記錄當中獲取多少條記錄顯示出來
執行優化分析
學習mysql數據庫的優化,主要是從這2個方面進行學習
學習如何寫出高質量的sql語句
學習任何保證創建的索引不會失效
mysql性能下降主要表現在這2個方面
執行語句所花費的時間變長
等待時間變長
mysql性能下降的主要原因
查詢語句寫的不好各種連接,各種子查詢導致用不上索引或者沒有建立索引
建立的索引失效建立了索引,在真正執行時,沒有用上建立的索引
關聯查詢太多join
服務器調優及和個配置參數導致如果設置的不合理,比例不恰當,也會導致性能下降,sql變慢
?
轉載于:https://www.cnblogs.com/pcliu/p/11100929.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Mysql的执行顺序与优化分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据仓库】OLTP系统和OLAP系统区
- 下一篇: Mysql的IF()函数:如果返回Tru