mysql語句執(zhí)行順序
這張圖與 SQL 查詢的語義有關(guān)燃观,讓你知道一個查詢會返回什么褒脯,并回答了以下這些問題:
可以在 GRROUP BY 之后使用 WHERE 嗎?(不行缆毁,WHERE 是在 GROUP BY 之后7ā)
可以對窗口函數(shù)返回的結(jié)果進行過濾嗎?(不行脊框,窗口函數(shù)是 SELECT 語句里颁督,而 SELECT 是在 WHERE 和 GROUP BY 之后)
可以基于 GROUP BY 里的東西進行 ORDER BY 嗎?(可以浇雹,ORDER BY 基本上是在最后執(zhí)行的沉御,所以可以基于任何東西進行 ORDER BY)
LIMIT 是在什么時候執(zhí)行?(在最后U蚜椤)
但數(shù)據(jù)庫引擎并不一定嚴格按照這個順序執(zhí)行 SQL 查詢吠裆,因為為了更快地執(zhí)行查詢,它們會做出一些優(yōu)化烂完,這些問題會在以后的文章中解釋试疙。
所以:
如果你想要知道一個查詢語句是否合法,或者想要知道一個查詢語句會返回什么窜护,可以參考這張圖;
在涉及查詢性能或者與索引有關(guān)的東西時非春,這張圖就不適用了柱徙。
2.了解mysql的回表嗎?mysql實現(xiàn)分布式鎖了解嗎奇昙?
3.組合索引和幾個單個的索引有什么區(qū)別护侮?數(shù)據(jù)庫的大表查詢優(yōu)化了解嗎?MVCC機制了解不储耐?MVCC機制有什么問題羊初?怎么去解決這個問題?
4.最左前綴匹配原則及它的原因?
5.where和having的區(qū)別?