SQL語(yǔ)句是數(shù)據(jù)庫(kù)資源消耗的主要來(lái)源,它往往都是可以進(jìn)一步優(yōu)化的,SQL優(yōu)化在時(shí)間成本和風(fēng)險(xiǎn)上代價(jià)低。
我們寫的SQL語(yǔ)句都會(huì)被查詢優(yōu)化器自動(dòng)優(yōu)化,它的優(yōu)化原則是這樣的:
1. 選擇運(yùn)算優(yōu)先運(yùn)行。(即優(yōu)先通過(guò)條件過(guò)濾記錄集)
2. 投影運(yùn)算與選擇運(yùn)算同時(shí)進(jìn)行。
3. 將笛卡爾積與隨后的選擇運(yùn)算合并為連接運(yùn)算
4. 投影運(yùn)算與其他運(yùn)算同時(shí)進(jìn)行
5. 尋找公共子表達(dá)式并將結(jié)果加以存儲(chǔ)
6. 對(duì)文件進(jìn)行預(yù)處理
由于有了以上優(yōu)化,所以下面兩種SQL的寫法效率一樣
select * from A,B where A.id=B.id and A.name='Jake'
select * from A,B were A.name='Jake' and A.id=B.id
隨著數(shù)據(jù)庫(kù)的進(jìn)化,原來(lái)效率低的語(yǔ)句現(xiàn)在不一定低,需要實(shí)際測(cè)試。