核心思想:減少SQL執(zhí)行過程要掃描的數(shù)據(jù)歧杏,越少越好夜只。
關(guān)鍵知識點(diǎn):理解索引結(jié)構(gòu)和掃描過程,嵌套循環(huán)和hash連接闸天,看懂執(zhí)行計(jì)劃暖呕。
結(jié)果數(shù)據(jù)要少:如果SQL會(huì)查出幾十萬數(shù)據(jù),優(yōu)化空間不大苞氮;如果結(jié)果數(shù)據(jù)少湾揽,一般可以選擇合適的方式精確定位數(shù)據(jù)。對大表count不算結(jié)果數(shù)據(jù)少笼吟。
索引選擇:選擇可以準(zhǔn)確定位出目標(biāo)數(shù)據(jù)的索引钝腺,索引定位出的數(shù)據(jù)要接近目標(biāo)數(shù)據(jù),并且命中數(shù)據(jù)要少赞厕。索引選擇是SQL優(yōu)化核心艳狐,有時(shí)可能是組合索引或表達(dá)式索引。
top n問題:排序top n時(shí)皿桑,如果沒有選擇度高的條件毫目,可以使用排序字段作為索引來避免對大表排序。
連接方式:表連接數(shù)據(jù)少時(shí)诲侮,使用嵌套循環(huán)镀虐,否則hash連接,OLTP一般用嵌套循環(huán)沟绪。
連接順序:小表作為驅(qū)動(dòng)表刮便,連接結(jié)果數(shù)據(jù)少的表優(yōu)先連接,有選擇度高條件的表優(yōu)先查詢绽慈。