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