mySQL之關(guān)鍵字的執(zhí)行優(yōu)先級(jí)講解
如下所示:
from 表
where 條件
group by 字段
形成虛擬的表及字段,聚合及字段添加
having 篩選數(shù)據(jù)
distinct 去重
order by 字段 asc,desc
limit 限制條數(shù)
select 羅列記錄
先根據(jù)where 約束條件 將數(shù)據(jù)從表中加載到內(nèi)存,所以where的條件作用在數(shù)據(jù)之前,然后根據(jù)字段進(jìn)行分組,在內(nèi)存中形成一張?zhí)摂M的表包含字段,
如果此時(shí)有聚合函數(shù)則先執(zhí)行聚合函數(shù),并將聚合函數(shù)字段也加到虛擬的表中,接著進(jìn)行having記錄篩選,篩選完成后對(duì)數(shù)據(jù)進(jìn)行去重,排序,限制等操作后進(jìn)行顯示。
補(bǔ)充知識(shí):mysql where條件and的執(zhí)行順序從左到右
之前做功能,把三個(gè)條件通過md5加密之后得到一個(gè)字符串的字段unique_key,把這個(gè)字段設(shè)置為唯一索引,希望查詢的時(shí)候通過這個(gè)唯一索引來查詢,不用分三個(gè)條件分別進(jìn)行查詢了,同時(shí)使用了replace方法保證相同的三個(gè)條件下更新數(shù)據(jù)的話數(shù)據(jù)庫只會(huì)有一條記錄。
后來發(fā)現(xiàn)列表查詢必須要開放這三個(gè)條件,于是只好將這個(gè)unique_key放到where條件and 的最左邊,通過unique_key篩選出來效率也不會(huì)差。
mysql的優(yōu)化方方面面,寫的時(shí)候要多考慮了。
以上這篇mySQL之關(guān)鍵字的執(zhí)行優(yōu)先級(jí)講解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
千萬級(jí)記錄的Discuz論壇導(dǎo)致MySQL CPU 100%的優(yōu)化筆記
談到自己在解決一個(gè)擁有 60 萬條記錄的 MySQL 數(shù)據(jù)庫訪問時(shí),導(dǎo)致 MySQL CPU 占用 100% 的經(jīng)過。在解決問題完成優(yōu)化(optimize)之后,我發(fā)現(xiàn) Discuz 論壇也存在這個(gè)問題,當(dāng)時(shí)稍微提了一下2010-12-12Windows系統(tǒng)中配置開啟MySQL數(shù)據(jù)庫日志的完整步驟
這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)中配置開啟MySQL數(shù)據(jù)庫日志的完整步驟,大家要開啟MySQL數(shù)據(jù)庫的日志功能,可以按照本文介紹的步驟進(jìn)行操作,需要的朋友可以參考下2023-09-09mysql unix準(zhǔn)換時(shí)間格式查找指定日期數(shù)據(jù)代碼
這篇文章主要介紹了mysql unix準(zhǔn)換時(shí)間格式查找指定日期數(shù)據(jù),需要的朋友可以參考下2014-03-03