mySQL之關鍵字的執(zhí)行優(yōu)先級講解
如下所示:
from 表
where 條件
group by 字段
形成虛擬的表及字段,聚合及字段添加
having 篩選數(shù)據
distinct 去重
order by 字段 asc,desc
limit 限制條數(shù)
select 羅列記錄
先根據where 約束條件 將數(shù)據從表中加載到內存,所以where的條件作用在數(shù)據之前,然后根據字段進行分組,在內存中形成一張?zhí)摂M的表包含字段,
如果此時有聚合函數(shù)則先執(zhí)行聚合函數(shù),并將聚合函數(shù)字段也加到虛擬的表中,接著進行having記錄篩選,篩選完成后對數(shù)據進行去重,排序,限制等操作后進行顯示。
補充知識:mysql where條件and的執(zhí)行順序從左到右
之前做功能,把三個條件通過md5加密之后得到一個字符串的字段unique_key,把這個字段設置為唯一索引,希望查詢的時候通過這個唯一索引來查詢,不用分三個條件分別進行查詢了,同時使用了replace方法保證相同的三個條件下更新數(shù)據的話數(shù)據庫只會有一條記錄。
后來發(fā)現(xiàn)列表查詢必須要開放這三個條件,于是只好將這個unique_key放到where條件and 的最左邊,通過unique_key篩選出來效率也不會差。
mysql的優(yōu)化方方面面,寫的時候要多考慮了。
以上這篇mySQL之關鍵字的執(zhí)行優(yōu)先級講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章:
1. Mybatis批量插入返回插入成功后的主鍵id操作2. MySql使用mysqldump 導入與導出方法總結3. MariaDB中1045權限錯誤導致拒絕用戶訪問的錯誤解決方法4. Microsoft Office Access刪除表記錄的方法5. 如何用mysqldump進行全量和時間點備份6. navicat for mysql導出數(shù)據庫的方法7. Row_number()函數(shù)用法小結8. DB2中實現(xiàn)Oracle的相關功能9. DB2 V9.5工作負載管理之閾值(THRESHOLD)10. 安裝配置mysql及Navicat prenium的詳細流程
